文本尺寸計算__方法使用

在iOS7之前一直使用NSString類 的 sizeWithFont:constrainedToSize:lineBreakMode:方法來計算文本的尺寸來適應(yīng)label控件, 但現(xiàn)在該方法已經(jīng)被淘汰了, 我們不得不另覓良方.
運行結(jié)果:

方法一實現(xiàn)效果.png
方法一: 
   NSString *str = @"大學(xué)的時候辛藻,隔壁寢室是個學(xué)霸寢室。
    明明是上著同樣的課程缴淋,她們四個,每次期末考試考出來的姻报,
    這四個人總是能夠排在前幾名.我當(dāng)時真想不通為什么推励,她們
    也和我一樣學(xué)曲梗,怎么就是比我好那么多。一直到有一次去她
    們寢室玩弄跌,我才發(fā)現(xiàn)了些許微妙的真相.她們寢室挺安靜甲喝,若
    是聽歌看視頻,自然是可以的铛只,不過相互之間都插著耳機埠胖,
    就怕打擾到彼此相處于同一片天空,哪怕關(guān)系再好淳玩,也要相
    互體諒直撤,相互理解。我想到我們寢室總是嘰嘰喳喳個沒完凯肋,
    一天到晚沒個停歇谊惭,哪怕想要好好學(xué)習(xí),被這氣氛一鬧侮东,也
    早就沒了心思圈盔。她們寢室四人總是會早早起床,一起相約去
    食堂吃飯悄雅,然后一起去自習(xí)教室早讀驱敲。我想起我剛開學(xué)幾天
    也是這么興致勃勃的,可是沒過一個禮拜宽闲,自然而然就松懈了下來.";
    #調(diào)用計算方法
    //參數(shù)一: 字符串內(nèi)容字體的字號
    //參數(shù)二: 約束大小(該值只是一個參考值, 這里我們只是要實現(xiàn)適應(yīng)label高度的結(jié)果, 所以此處的高度一定要給以給比較大的值, 超過實際高度, 否則無效)
    //參數(shù)三: 文本換行方式
   CGSize sizeLabel = [str sizeWithFont:[UIFont systemFontOfSize:14] constrainedToSize:CGSizeMake(300, 3000) lineBreakMode:NSLineBreakByCharWrapping];
    
    //初始化label, 高度和寬度使用我們計算的結(jié)果
   UILabel *textLabel = [[UILabel alloc] initWithFrame:CGRectMake(50, 100, sizeLabel.width, sizeLabel.height)];
   textLabel.font = [UIFont systemFontOfSize:14]; //與上面的字號統(tǒng)一噢~
   textLabel.numberOfLines = 0;
   textLabel.text = str;
   textLabel.backgroundColor = [UIColor orangeColor];
   [self.view addSubview:textLabel];```

接下來, 說說現(xiàn)在能夠正常使用的方法
先來看看iOS7 SDK包中關(guān)于  --> boudingRectWithSize:options:attributes:context方法的定義
  • (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(NSDictionary *)attributes context:(NSStringDrawingContext *)context NS_AVAILABLE_IOS(7_0);

類似方法:

  • (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options context:(NSStringDrawingContext *)context NS_AVAILABLE_IOS(6_0); ```
方法二的實現(xiàn)效果.png
方法二: 
    //參數(shù)一: 寬高限制, 用于計算文本繪制時占據(jù)的最大矩形塊
    //參數(shù)二: 文本超出指定的矩形限制時的顯示方式 
    //參數(shù)三: 富文本的設(shè)置
    NSDictionary *fontDic = @{NSFontAttributeName:[UIFont systemFontOfSize:14]};
    #方法二
    //文字高度計算時必須使用該值NSStringDrawingUsesLineFragmentOrigin, 否則無效
    CGSize sileLabel = [str boundingRectWithSize:CGSizeMake(300, 10000) options:NSStringDrawingUsesLineFragmentOrigin attributes:fontDic context:nil].size;
    
    
    UILabel *textLabel = [[UILabel alloc] initWithFrame:CGRectMake(50, 100, sileLabel.width, sileLabel.height)];
    textLabel.font = [UIFont systemFontOfSize:14]; //與上面的字號統(tǒng)一噢~
    textLabel.numberOfLines = 0;
    textLabel.text = str;
    textLabel.backgroundColor = [UIColor yellowColor];
    [self.view addSubview:textLabel];







1.其中如果options參數(shù)為NSStringDrawingUsesLineFragmentOrigin众眨,那么整個文本將以每行組成的矩形為單位計算整個文本的尺寸。(在這里有點奇怪容诬,因為字體高度大概是13.8娩梨,textView中大概有10行文字,此時用該選項計算出來的只有5行览徒,即高度為69狈定,而同時使用NSStringDrawingUsesFontLeading | NSStringDrawingUsesLineFragmentOrigin卻可以得出文字剛好有10行,即高度為138,這里要等iOS7官方的文檔出來再看看選項的說明纽什,因為畢竟以上文檔是iOS6的東西)
2.如果為NSStringDrawingTruncatesLastVisibleLine或者NSStringDrawingUsesDeviceMetric措嵌,那么計算文本尺寸時將以每個字或字形為單位來計算。

3.如果為NSStringDrawingUsesFontLeading則以字體間的行距(leading芦缰,行距:從一行文字的底部到另一行文字底部的間距企巢。)來計算。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末让蕾,一起剝皮案震驚了整個濱河市浪规,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌涕俗,老刑警劉巖罗丰,帶你破解...
    沈念sama閱讀 216,744評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異再姑,居然都是意外死亡萌抵,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,505評論 3 392
  • 文/潘曉璐 我一進店門元镀,熙熙樓的掌柜王于貴愁眉苦臉地迎上來绍填,“玉大人,你說我怎么就攤上這事栖疑√钟溃” “怎么了?”我有些...
    開封第一講書人閱讀 163,105評論 0 353
  • 文/不壞的土叔 我叫張陵遇革,是天一觀的道長卿闹。 經(jīng)常有香客問我,道長萝快,這世上最難降的妖魔是什么锻霎? 我笑而不...
    開封第一講書人閱讀 58,242評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮揪漩,結(jié)果婚禮上旋恼,老公的妹妹穿的比我還像新娘。我一直安慰自己奄容,他們只是感情好冰更,可當(dāng)我...
    茶點故事閱讀 67,269評論 6 389
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著昂勒,像睡著了一般蜀细。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上戈盈,一...
    開封第一講書人閱讀 51,215評論 1 299
  • 那天奠衔,我揣著相機與錄音,去河邊找鬼。 笑死涣觉,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的血柳。 我是一名探鬼主播官册,決...
    沈念sama閱讀 40,096評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼难捌!你這毒婦竟也來了膝宁?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,939評論 0 274
  • 序言:老撾萬榮一對情侶失蹤根吁,失蹤者是張志新(化名)和其女友劉穎员淫,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體击敌,經(jīng)...
    沈念sama閱讀 45,354評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡介返,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,573評論 2 333
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了沃斤。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片圣蝎。...
    茶點故事閱讀 39,745評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖衡瓶,靈堂內(nèi)的尸體忽然破棺而出徘公,到底是詐尸還是另有隱情,我是刑警寧澤哮针,帶...
    沈念sama閱讀 35,448評論 5 344
  • 正文 年R本政府宣布关面,位于F島的核電站,受9級特大地震影響十厢,放射性物質(zhì)發(fā)生泄漏等太。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,048評論 3 327
  • 文/蒙蒙 一寿烟、第九天 我趴在偏房一處隱蔽的房頂上張望澈驼。 院中可真熱鬧,春花似錦筛武、人聲如沸缝其。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,683評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽内边。三九已至,卻和暖如春待锈,著一層夾襖步出監(jiān)牢的瞬間漠其,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,838評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留和屎,地道東北人拴驮。 一個月前我還...
    沈念sama閱讀 47,776評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像柴信,于是被迫代替她去往敵國和親套啤。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,652評論 2 354

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