UILabel進行根據內容自適應大小

2021-06-27 17:40:52 字數 1348 閱讀 1913

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