UILabel 簡單實現自動換行

2021-06-19 07:38:06 字數 974 閱讀 3383

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...