XIB下UILabel的自動(dòng)換行(可動(dòng)態(tài)換行以及調(diào)整高度)

樣式:


主治疾病Label.png

XIB的設(shè)置:


xib設(shè)置.png

text為plain不影響;attributed適用于IOS7的文本定制片择;lines=0代表多行潜的;Word Wrap代表自動(dòng)換行;

將Label上下左右都設(shè)置約束,寬高不設(shè)約束即可,或者如下圖


約束設(shè)置.jpeg

位置和大小都確定了字管,當(dāng)內(nèi)容增大時(shí)啰挪,希望高度進(jìn)行提高,所以使用>=來(lái)表示內(nèi)容增大時(shí)動(dòng)態(tài)的增大其高度

這樣就完成了動(dòng)態(tài)換行和調(diào)整高度

--------------------------------------- 華麗的分割線 -------------------------------------

另外再說(shuō)一種場(chǎng)景

背景:
相信很多朋友都遇到過(guò)嘲叔,文本的內(nèi)容長(zhǎng)度不一亡呵,需要根據(jù)內(nèi)容的多少來(lái)自動(dòng)換行處理。
場(chǎng)景:
很多APP中評(píng)論硫戈,有的評(píng)論長(zhǎng)锰什,有的評(píng)論短,有的一行,有的多行歇由。

下面以評(píng)論的實(shí)現(xiàn)為例來(lái)說(shuō)說(shuō)具體如何實(shí)現(xiàn)卵牍。

技術(shù)點(diǎn):
UILabel的自動(dòng)換行,自動(dòng)換行的同時(shí)要自適應(yīng)Frame大小沦泌。
UITableView的行高自適應(yīng)內(nèi)容糊昙,實(shí)時(shí)調(diào)整高度。
實(shí)現(xiàn)方法:
UILabel的自動(dòng)換行
獲取UILabel的frame大小
獲取UILabel的字體大小
獲取UILabel的文本內(nèi)容
根據(jù)上面的3部分?jǐn)?shù)據(jù)谢谦,計(jì)算文本顯示區(qū)域大小
根據(jù)4計(jì)算的大小释牺,實(shí)時(shí)改變UILabel的frame
code如下:

  NSString * labelStr = @“你好,這是UILabel的自動(dòng)換行測(cè)試內(nèi)容回挽,主要實(shí)現(xiàn)多行數(shù)據(jù)的自動(dòng)換行没咙,自適應(yīng)不同行數(shù)的數(shù)據(jù)”;

    CGSize labelSize = {0, 0};

    labelSize = [labelStr sizeWithFont:[UIFont systemFontOfSize:14]

                        constrainedToSize:CGSizeMake(200.0, 5000)

                            lineBreakMode:UILineBreakModeWordWrap];

//14 為UILabel的字體大小

//200為UILabel的寬度,5000是預(yù)設(shè)的一個(gè)高度千劈,表示在這個(gè)范圍內(nèi)

label.numberOfLines = 0;//表示label可以多行顯示

    label.lineBreakMode = UILineBreakModeCharacterWrap;//換行模式祭刚,與上面的計(jì)算保持一致。

    label.frame = CGRectMake(label.frame.origin.x, label.frame.origin.y, label.frame.size.width, labelSize.height);//保持原來(lái)Label的位置和寬度墙牌,只是改變高度涡驮。

UITableView的行高自適應(yīng)內(nèi)容
這個(gè)和上面的類似,直接上Code:

- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {

NSString * labelStr = @“你好喜滨,這是UILabel的自動(dòng)換行測(cè)試內(nèi)容捉捅,主要實(shí)現(xiàn)多行數(shù)據(jù)的自動(dòng)換行,自適應(yīng)不同行數(shù)的數(shù)據(jù)”;

CGSize labelSize = {0, 0};

labelSize = [labelStr sizeWithFont:[UIFont systemFontOfSize:14]

constrainedToSize:CGSizeMake(200.0, 5000)

lineBreakMode:UILineBreakModeWordWrap];

//14 為UILabel的字體大小

//200為UILabel的寬度虽风,5000是預(yù)設(shè)的一個(gè)高度棒口,表示在這個(gè)范圍內(nèi)

return labelSize.height + delta;

//delta 是Cell除了自適應(yīng)控件UILabel外的其它控件所占的高度。

}

小結(jié):實(shí)現(xiàn)上面2個(gè)技術(shù)點(diǎn)后辜膝,評(píng)論相關(guān)的APP或者類似的APP都可以做到自適應(yīng)內(nèi)容无牵,根據(jù)內(nèi)容多少自動(dòng)換行,自動(dòng)調(diào)整控件的位置和大小厂抖,達(dá)到最優(yōu)的顯示效果茎毁。

iOS 8.0 以上
self.tableView.estimatedRowHeight = 60 ; //估算tableViewcell的高度
self.tableView.rowHeight = UITableViewAutomaticDimension;

UILabel 的 lineBreakMode屬性 :設(shè)置標(biāo)簽文字過(guò)長(zhǎng)時(shí)的顯示方式。

label.lineBreakMode = NSLineBreakByCharWrapping;    //以字符為顯示單位顯示验游,后面部分省略不顯示充岛。   
label.lineBreakMode = NSLineBreakByClipping;        //剪切與文本寬度相同的內(nèi)容長(zhǎng)度,后半部分被刪除耕蝉。   
label.lineBreakMode = NSLineBreakByTruncatingHead;  //前面部分文字以……方式省略崔梗,顯示尾部文字內(nèi)容。   
label.lineBreakMode = NSLineBreakByTruncatingMiddle;    //中間的內(nèi)容以……方式省略垒在,顯示頭尾的文字內(nèi)容蒜魄。   
label.lineBreakMode = NSLineBreakByTruncatingTail;  //結(jié)尾部分的內(nèi)容以……方式省略,顯示頭的文字內(nèi)容。   
label.lineBreakMode = NSLineBreakByWordWrapping;    //以單詞為顯示單位顯示谈为,后面部分省略不顯示旅挤。 

到此為止.記錄下容易忘的細(xì)節(jié)同大家分享!!!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市伞鲫,隨后出現(xiàn)的幾起案子粘茄,更是在濱河造成了極大的恐慌,老刑警劉巖秕脓,帶你破解...
    沈念sama閱讀 216,372評(píng)論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件柒瓣,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡吠架,警方通過(guò)查閱死者的電腦和手機(jī)芙贫,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)傍药,“玉大人磺平,你說(shuō)我怎么就攤上這事」樟桑” “怎么了拣挪?”我有些...
    開(kāi)封第一講書(shū)人閱讀 162,415評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)薛训。 經(jīng)常有香客問(wèn)我媒吗,道長(zhǎng)仑氛,這世上最難降的妖魔是什么乙埃? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,157評(píng)論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮锯岖,結(jié)果婚禮上介袜,老公的妹妹穿的比我還像新娘。我一直安慰自己出吹,他們只是感情好遇伞,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,171評(píng)論 6 388
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著捶牢,像睡著了一般鸠珠。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上秋麸,一...
    開(kāi)封第一講書(shū)人閱讀 51,125評(píng)論 1 297
  • 那天渐排,我揣著相機(jī)與錄音,去河邊找鬼灸蟆。 笑死驯耻,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播可缚,決...
    沈念sama閱讀 40,028評(píng)論 3 417
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼霎迫,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了帘靡?” 一聲冷哼從身側(cè)響起知给,我...
    開(kāi)封第一講書(shū)人閱讀 38,887評(píng)論 0 274
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎描姚,沒(méi)想到半個(gè)月后炼鞠,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,310評(píng)論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡轰胁,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,533評(píng)論 2 332
  • 正文 我和宋清朗相戀三年谒主,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片赃阀。...
    茶點(diǎn)故事閱讀 39,690評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡霎肯,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出榛斯,到底是詐尸還是另有隱情观游,我是刑警寧澤,帶...
    沈念sama閱讀 35,411評(píng)論 5 343
  • 正文 年R本政府宣布驮俗,位于F島的核電站懂缕,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏王凑。R本人自食惡果不足惜搪柑,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,004評(píng)論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望索烹。 院中可真熱鬧工碾,春花似錦、人聲如沸百姓。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,659評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)垒拢。三九已至旬迹,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間求类,已是汗流浹背奔垦。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,812評(píng)論 1 268
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留仑嗅,地道東北人宴倍。 一個(gè)月前我還...
    沈念sama閱讀 47,693評(píng)論 2 368
  • 正文 我出身青樓张症,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親鸵贬。 傳聞我的和親對(duì)象是個(gè)殘疾皇子俗他,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,577評(píng)論 2 353

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