iOS Label設定行距自適應高度

2021-07-25 02:43:45 字數 2322 閱讀 9206

關於label自適應高度想必只要有一點開發基礎的朋友都應該了解,這邊我就不多提了,貼上一段自己寫的計算的**。

+ (cgfloat)textheightfromtextstring:(nsstring *)text width:(cgfloat)textwidth fontsize:(cgfloat)size;

cgrect rect = [text boundingrectwithsize:cgsizemake(textwidth, maxfloat) options:nsstringdrawingusesfontleading|nsstringdrawinguseslinefragmentorigin attributes:dict context:nil];

return rect.size

.height;

}else

}

專案中很多的label需要根據實際內容計算高度,這個方法能夠滿足計算動態高度。

如何設定label的行間距

如果設定行間距,那麼ui可能會比較難看,一般ui需求都會對行間距有一些要求。

那麼如何設定行間距呢?

如果需要設定行間距,我們的label必須給予attributedtext(富文字)而不是普通的text,如果設定text那麼行間距固定為0,效果就和上圖一樣十分不美觀。

我們可以設定乙個富文字進行賦值,對行間距賦值就可以達到效果

/* str 顯示的字串

font 字型大小

lineheight 行間距

*/ - (nsattributedstring *)getattibutestringwithstring:(nsstring *)str textfont:(uifont *)font lineheight:(nsinteger)lineheight;

[attributestr addattributes:attribute range:range];

return attributestr;

}

然後在對label進行賦值,就可以設定行間距了

我們在對他進行剛剛的自適應高度設定

效果出來後發現,行間距確實設定了,但是高度不自適應了,這是什麼原因呢,原來設定高度的時候我呼叫的還是原來的設定高度的方法,但是我們現在設定的是設定文字,裡面有行間距,如果用原來的方法那麼他計算的高度還是按照行間距為0計算,因此我們需要重新寫乙個方法計算富文字的動態高度。

/* text 顯示的字串

font 字型大小

lineheight 行間距

*/- (cgfloat)getlabelheightwithtext:(nsstring *)text width:(cgfloat)width textfont:(uifont *)font lineheight:(nsinteger)lineheight;

cgrect rect = [text boundingrectwithsize:cgsizemake(width, maxfloat) options:nsstringdrawingusesfontleading|nsstringdrawinguseslinefragmentorigin attributes:attribute context:nil];

return rect.size

.height;

}

這裡幾個注意點

1、傳入的寬度必須和label顯示的最大寬度一致

2、傳入的字型必須和設定富文字時候的字型相同

3、傳入的行間距必須和富文字的相同

如此乙個label既可以設定行距又可以自適應高度,到達ui給出的效果。

ios UITextView設定行距

由於uitextview沒有設定行距的方法,所以我們要在uitextview有變化的時候隨時改變固定uitextview的行距,而且每當我們輸入的是中文的時候,需要判斷我們輸入的是拼音還是中文再來改變行距,因此我們可以嘗試下面的方法 1 h檔案我們必須先加上 uitextviewdelegate的 ...

WebView設定自適應螢幕大小

第一種 settings.setusewideviewport true settings.setloadwithoverviewmode true 第二種 websetting settings webview.getsettings settings.setlayoutalgorithm lay...

移動端自適應 meta viewport設定

加上 1 viewport 移動裝置上的viewport是裝置螢幕上用來顯示網頁的那部分區域,再具體一點就是瀏覽器上用來顯示網頁的那部分區域,但viewport又不侷限於瀏覽器可視區域的大小,它可能比瀏覽器的可視區域大,也可能比瀏覽器的可視區域小。在預設情況下,移動裝置上的viewport都是大於瀏...