ios 中內容label高度自適應

2021-12-29 23:11:07 字數 2927 閱讀 3024

首先並且最重要的是計算文字高度,然後再設定label的高度,

計算文字高度:

假設文字:

nsstring*strtest =@"

新華網北京12月16日電據新華社「新華國際」客戶端報道,「一日之計在於晨」。克強總理15日的緊張日程從一頓早飯開始。天剛濛濛亮,哈薩克總理馬西莫夫就來到克強總理下榻的酒店——北京大廈,邀請克強總理一起吃早餐。這是一頓簡單的早餐,只有一張圓桌,兩把椅子,一些簡單的中西餐點。這也是一頓豐盛的早餐,兩位總理在餐桌上就中哈產能合作達成的共識內容豐富,覆蓋廣泛。這更是一頓登高望遠的早餐,這項合作不僅將惠及中哈兩國人民,更將為區域內各國帶來長遠的共同利益。站在大廈23層的旋轉餐廳,阿斯塔納城盡收眼底,這裡適合登高遠眺。";

事實上ios 有兩種方法:

ios7.0之前用:

[strtestsizewithfont:contentfontconstrainedtosize:cgsizemake(screenweight

-20, 1000) linebreakmode:nslinebreakbywordwrapping];

之後用下面的方法比較好:

cgrect frame = [strtestboundingrectwithsize:cgsizemake(220,1000)

options:nsstringdrawinguseslinefragmentoriginattributes:@context:nil];

attributes引數有:

nsfontattributename // uifont, default helvetica(neue) 12

nsparagraphstyleattributename // nsparagraphstyle, default defaultparagraphstyle

nsforegroundcolorattributename // uicolor, default blackcolor

nsbackgroundcolorattributename // uicolor, default nil: no background

nsligatureattributename // nsnumber containing integer, default 1: default ligatures, 0: no ligatures

nskernattributename // nsnumber containing floating point value, in points; amount to modify default kerning. 0 means kerning is disabled.

nsstrikethroughstyleattributename ; // nsnumber containing integer, default 0: no strikethrough

nsunderlinestyleattributename // nsnumber containing integer, default 0: no underline

nsstrokecolorattributename // uicolor, default nil: same as foreground color

nsstrokewidthattributename // nsnumber containing floating point value, in percent of font point size, default 0: no stroke; positive for stroke alone, negative for stroke

and fill (a typical value for outlined text would be 3.0)

nsshadowattributename ; // nsshadow, default nil: no shadow

nstexteffectattributename // nsstring, default nil: no text effect

nsattachmentattributename // nstextattachment, default nil

nslinkattributename // nsurl (preferred) or nsstring

nsbaselineoffsetattributename // nsnumber containing floating point value, in points; offset from baseline, default 0

nsunderlinecolorattributename // uicolor, default nil: same as foreground color

nsstrikethroughcolorattributename // uicolor, default nil: same as foreground color

nsobliquenessattributename // nsnumber containing floating point value; skew to be applied to glyphs, default 0: no skew

n***pansionattributename // nsnumber containing floating point value; log of expansion factor to be applied to glyphs, default 0: no expansion

建立label的時候注意:

① label的font,必須和計算時用的font一樣

② label的numberoflines要設定為零

③ label的寬度設定成計算時設定的寬度一致

Android ImageView高度自適應

最近有個需求,是往乙個linearlayout中去新增imageview,imageview是動態生成的,然後設定imageview的屬性,但是不管怎麼設定scaletype,都達不到自己喜歡的狀態,顯示原圖大小的話會在imageview的上下有留白,如圖 初步猜想是由於原始 比較大,然後縮放後im...

div模擬textarea以實現高度自適應例項頁面

使用很簡單,乙個普通的block元素上加個contenteditable true 就ok了,如下 true外面的引號甚至去掉都沒關係。contenteditable屬性雖是html5裡面的內容,但是ie似乎老早就支援此標籤屬性了。所以,相容性方面還是不用太擔心的。ok,最麻煩的模擬textarea...

iOS 計算label的寬度和高度

根據寬度求高度 content 計算的內容 width 計算的寬度 font字型大小 cgfloat getlabelheightwithtext nsstring text width cgfloat width font cgfloat font context nil return rect....