ios7以前我們對uilabel進行根據內容自適應大小的時候會使用方法sizewithfont:constrainedtosize:linebreakmode,但是這個方法在ios7之後就被deprecated了。對此,ios7提供了乙個新的方法來替代它,就是nsstring的成員方法:
- (cgrect)boundingrectwithsize:(cgsize)size options:(nsstringdrawingoptions)options attributes:(nsdictionary *)attributes context:(nsstringdrawingcontext *)context;
相信很多人對於這個方法還比較陌生,尤其是不知道那個attributes引數是幹啥用的。這裡簡單介紹一下這些引數:
引數:size:
寬高限制,用於計算文字繪製時佔據的矩形塊。
寬度的限制一般就是view的寬度,如果高度不限定的話就設為0就行了,例如。
options:
「nsstringdrawingoptions」.
具體有以下幾個型別:
nsstringdrawingtruncates
lastvisibleline
如果文字內容超出指定的矩形限制,文字將被截去並在最後乙個字元後加上省略號。如果指定了nsstringdrawinguseslinef
ragmentorigin選項,則該選項被忽略。
nsstringdrawinguseslinef
ragmentorigin
繪製文字時使用 line fragement origin 而不是 baseline origin。
nsstringdrawingusesfontl
eading
計算行高時使用行間距。(譯者注:字型大小+行間距=行高)
nsstringdrawingusesdevic
emetrics
計算布局時使用圖元字形(而不是印刷字型)。
attributes:
關於attributes官方的說明是這樣的:
但是我們用來計算label的大小的時候只需要用的font這個屬性就行了,例如:
nsdictionary * attribute = @;
context:
context上下文。包括一些資訊,例如如何調整字間距以及縮放。最終,該物件包含的資訊將用於文字繪製。該引數可為 nil 。
返回值
乙個矩形,大小等於文字繪製完將佔據的寬和高。
具體的例子如下:
UILabel和UITextView自適應高度
uilabel自動換行,自適應高度 uilabel label uilabel alloc initwithframe cgrectzero label setbackgroundcolor uicolor clearcolor label setfont uifont systemfontofsi...
ios7中的UILabel自適決定大小
nsstring tstring testlable.numberoflines 2 uifont tfont uifont systemfontofsize 14 testlable.font tfont testlable.linebreakmode nslinebreakbytruncatin...
iOS開發 UILabel根據內容自動調整高度
寫法一 物件方法,傳入 字型 最大尺寸.即可得到寬高,最大尺寸主要限制寬度,如果是一行就給個 如果是多行就限制x值,y值隨便給 cgsize sizewithfont uifont font maxsize cgsize maxsize return self boundingrectwithsiz...