boundingRectWithSize的使用-20170222小白學(xué)習(xí)記錄

關(guān)于根據(jù)內(nèi)容大小來進(jìn)行文本高度的自適應(yīng)瘩蚪,這一知識點(diǎn)泉懦,似乎似懂非懂,很是模糊疹瘦,這不崩哩,今日決定非得把它弄懂50%,剩下的50%留著在以后去鞏固^*^言沐。

文本自適應(yīng)高度用到的地方:自定義cell里面的Label,通常要顯示較多的文字信息邓嘹,label根據(jù)文字信息來靈活的調(diào)節(jié)cell的高度。應(yīng)用的場景如聊天對話框险胰,評論文本信息等汹押。它需要計算出文字部分的尺寸,才能設(shè)計出合適的控件尺寸和位置起便。

首先來了解IOS 7.0計算文本尺寸的方法棚贾,用到的就是下面這一關(guān)鍵函數(shù):

-(CGRect)boundingRectWithSize:(CGSize)size

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? options:(NSStringDrawingOptions*)options

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?attributes:(NSDictionary*)attributes

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?context:(NSStringDrawingContext *)context

這是NSString的對象方法艺糜,一個字符串實(shí)例調(diào)用該方法時髓涯,方法會通過傳入的參數(shù)返回一個CGRect型數(shù)據(jù),這個數(shù)據(jù)的size就是此時字符串顯示成文本的尺寸。


參數(shù)一管嬉、CGSize)size : 表示計算文本的最大寬高,就是限制的最大高度执隧、寬度肆糕,一般情況下我們設(shè)置最大的寬度态鳖、高度不限制表示為:

CGSizeMake(getScreenWidth(), CGFLOAT_MAX)

注意:限制的寬度不同,計算的高度結(jié)果也不同.限制尺寸耿芹。


參數(shù)二崭篡、(NSStringDrawingOptions*)options:表示計算的類型,有四種類型:

1.NSStringDrawingTruncatesLastVisibleLine:如果文本內(nèi)容超出指定的矩形限制猩系,文本將被截去并在最后一個字符后加上省略號媚送。如果NSStringDrawingUsesLineFragmentOrigin沒有設(shè)置,則該選項(xiàng)不生效

2.NSStringDrawingUsesLineFragmentOrigin:整個文本將以每行組成的矩形為單位計算整個文本的尺寸

3.NSStringDrawingUsesFontLeading:使用字體的行間距來計算文本占用的范圍寇甸,即每一行的底部到下一行的底部的距離計算

4.NSStringDrawingUsesDeviceMetrics:將文字以圖像符號計算文本占用范圍塘偎,而不是以字符計算。也即是以每一個字體所占用的空間來計算文本范圍

對于這四種類型的效果拿霉,可以多種類型組合使用:

a吟秩、如果options參數(shù)=NSStringDrawingUsesLineFragmentOrigin,那么整個文本將以每行組成的矩形為單位計算整個文本的尺寸绽淘。

(在這里有點(diǎn)奇怪涵防,因?yàn)樽煮w高度大概是13.8,textView中大概有10行文字沪铭,此時用該選項(xiàng)計算出來的只有5行壮池,即高度為69。

b杀怠、如果options參數(shù)=NSStringDrawingUsesFontLeading | NSStringDrawingUsesLineFragmentOrigin 卻可以得出文字剛好有10行椰憋,即高度為138,

c赔退、如果options參數(shù)=NSStringDrawingTruncatesLastVisibleLine

或者如果options參數(shù)= NSStringDrawingUsesDeviceMetric橙依,那么計算文本尺寸時將以每個字或字形為單位來計算。

d硕旗、如果options參數(shù)=NSStringDrawingUsesFontLeading則以字體間的行距(leading窗骑,行距:從一行文字的底部到另一行文字底部的間距。)來計算漆枚。

以上具體可見iOS7計算文本尺寸新方法创译。


參數(shù)三、(NSDictionary*)attributes:文本的屬性墙基,如字體软族,文字樣式(NSFontAttributeName辛藻、NSParagraphStyleAttributeName)。例如互订,

NSDictionary *dict = @{NSFontAttributeName : font}


參數(shù)四、(NSStringDrawingContext *)context:上下文痘拆。包括一些信息仰禽,例如如何調(diào)整字間距以及縮放。最終纺蛆,該對象包含的信息將用于文本繪制吐葵。該參數(shù)可為 nil 。

送上簡單示例:


demo學(xué)習(xí)的新知識點(diǎn):

NSLineBreakMode屬性詳解:用于多行和多行文本->字符截斷類型(lineBreakMode //設(shè)置文字過長時的顯示格式)

// NSParagraphStyle

typedef NS_ENUM(NSInteger, NSLineBreakMode) {

NSLineBreakByWordWrapping :以單詞為顯示單位顯示桥氏,后面部分省略不顯示温峭。默認(rèn)

NSLineBreakByCharWrapping,以字符為顯示單位顯示,后面部分省略不顯示

NSLineBreakByClipping,剪切與文本寬度相同的內(nèi)容長度字支,后半部分被刪除

NSLineBreakByTruncatingHead, 前面部分文字以……方式省略凤藏,顯示尾部文字內(nèi)容。

NSLineBreakByTruncatingTail, 結(jié)尾部分的內(nèi)容以……方式省略堕伪,顯示頭的文字內(nèi)容

NSLineBreakByTruncatingMiddle 中間的內(nèi)容以……方式省略揖庄,顯示頭尾的文字內(nèi)容

}

未完待續(xù)。欠雌。蹄梢。。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末富俄,一起剝皮案震驚了整個濱河市禁炒,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌霍比,老刑警劉巖幕袱,帶你破解...
    沈念sama閱讀 206,214評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異桂塞,居然都是意外死亡凹蜂,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,307評論 2 382
  • 文/潘曉璐 我一進(jìn)店門阁危,熙熙樓的掌柜王于貴愁眉苦臉地迎上來玛痊,“玉大人,你說我怎么就攤上這事狂打±奚罚” “怎么了?”我有些...
    開封第一講書人閱讀 152,543評論 0 341
  • 文/不壞的土叔 我叫張陵趴乡,是天一觀的道長对省。 經(jīng)常有香客問我蝗拿,道長,這世上最難降的妖魔是什么蒿涎? 我笑而不...
    開封第一講書人閱讀 55,221評論 1 279
  • 正文 為了忘掉前任哀托,我火速辦了婚禮,結(jié)果婚禮上劳秋,老公的妹妹穿的比我還像新娘仓手。我一直安慰自己,他們只是感情好玻淑,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,224評論 5 371
  • 文/花漫 我一把揭開白布嗽冒。 她就那樣靜靜地躺著,像睡著了一般补履。 火紅的嫁衣襯著肌膚如雪添坊。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,007評論 1 284
  • 那天箫锤,我揣著相機(jī)與錄音贬蛙,去河邊找鬼。 笑死谚攒,一個胖子當(dāng)著我的面吹牛速客,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播五鲫,決...
    沈念sama閱讀 38,313評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼溺职,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了位喂?” 一聲冷哼從身側(cè)響起浪耘,我...
    開封第一講書人閱讀 36,956評論 0 259
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎塑崖,沒想到半個月后七冲,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,441評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡规婆,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,925評論 2 323
  • 正文 我和宋清朗相戀三年澜躺,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片抒蚜。...
    茶點(diǎn)故事閱讀 38,018評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡掘鄙,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出嗡髓,到底是詐尸還是另有隱情操漠,我是刑警寧澤,帶...
    沈念sama閱讀 33,685評論 4 322
  • 正文 年R本政府宣布饿这,位于F島的核電站浊伙,受9級特大地震影響撞秋,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜嚣鄙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,234評論 3 307
  • 文/蒙蒙 一吻贿、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧哑子,春花似錦廓八、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,240評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽声功。三九已至烦却,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間先巴,已是汗流浹背其爵。 一陣腳步聲響...
    開封第一講書人閱讀 31,464評論 1 261
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留伸蚯,地道東北人摩渺。 一個月前我還...
    沈念sama閱讀 45,467評論 2 352
  • 正文 我出身青樓,卻偏偏與公主長得像剂邮,于是被迫代替她去往敵國和親摇幻。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,762評論 2 345

推薦閱讀更多精彩內(nèi)容