uilabel *label = [[[uilabel alloc] initwithframe:cgrectzero] autorelease];
label.font = [uifont systemfontofsize:15];
label.numberoflines = 0; //0代表行數沒有最大限制
[self.view addsubview:label];
//引數1:一定要跟label的字型大小相同
//引數2:最大寬度和高度
//引數3:換行方式
cgsize size = [label.text sizewithfont:label.font
constrainedtosize:cgsizemake(200, 300)
label.frame = cgrectmake(10, 30, size.width, size.height);
前不久qa報了個文字顯示不全的bug,我看了下**,發現是計算高度出了問題。之前的同事在uitableviewcell中使用了uitextview,但是計算高度時使用了和uilabel相同的的方法。
其實uitextview在上下左右分別有乙個8px的padding,當使用[nsstringsizewithfont:constrainedtosize:linebreakmode:]時,需要將uitextview.contentsize.width減去16畫素(左右的padding 2 x 8px)。同時返回的高度中再加上16畫素(上下的padding),這樣得到的才是uitextview真正適應內容的高度。
示例**如下:
+ (float) heightfortextview: (uitextview *)textview withtext: (nsstring *) strtext
UILabel 自動換行
實現方法 獲取uilabel的frame大小 獲取uilabel的字型大小 獲取uilabel的文字內容 根據上面的3部分資料,計算文字顯示區域大小 根據4計算的大小,實時改變uilabel的frame nsstring string 自動換行uilabel自適應啦啦啦啦啦啦啦啦 cgsize la...
UILabel自適應高度和自動換行
初始化label uilabel label uilabel alloc initwithframe cgrectmake 0,0,0,0 設定自動行數與字元換行 label setnumberoflines 0 label.linebreakmode uilinebreakmodewordwrap...
UILabel設定自動使用高和換行
初始化label uilabel label uilabel alloc initwithframe cgrectmake 0,0,0,0 設定自動行數與字元換行 label setnumberoflines 0 label.linebreakmode uilinebreakmodewordwrap...