關於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都是大於瀏...