IOS下 UILabel 如何自動換行

來源:互聯網
上載者:User

標籤:style   blog   http   color   os   io   資料   for   

轉自:http://zasoft.blog.163.com/blog/static/205215176201301414915700/

背景:

相信很多朋友都遇到過,文本的內容長度不一,需要根據內容的多少來自動換行處理。情境:很多APP中評論,有的評論長,有的評論短,有的一行,有的多行。?下面以評論的實現為例來說說具體如何?。?技術點:
  1. UILabel的自動換行,自動換行的同時要自適應Frame大小。
  2. UITableView的行高自適應內容,即時調整高度。
實現方法:
  • UILabel的自動換行
  1. 擷取UILabel的frame大小
  2. 擷取UILabel的字型大小
  3. 擷取UILabel的常值內容
  4. 根據上面的3部分資料,計算文本顯示地區大小
  5. 根據4計算的大小,即時改變UILabel的frame
code如下:

?

? NSString* labelStr =@“你好,這是UILabel的自動換行測試內容,主要實現多行資料的自動換行,自適應不同行數的資料”;

? ? CGSize labelSize ={0,0};

? ? labelSize=[labelStrsizeWithFont:[UIFontsystemFontOfSize:14]

? ? ? ? ? ? ? ? ? ? ? ? constrainedToSize:CGSizeMake(200.0,5000)

? ? ? ? ? ? ? ? ? ? ? ? ? ? lineBreakMode:UILineBreakModeWordWrap];

//14 為UILabel的字型大小

//200為UILabel的寬度,5000是預設的一個高度,表示在這個範圍內

?

?

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

? ? label.lineBreakMode = UILineBreakModeCharacterWrap;//換行模式,與上面的計算保持一致。

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

?

?


  • UITableView的行高自適應內容
這個和上面的類似,直接上Code:

?

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

{

NSString* labelStr =@“你好,這是UILabel的自動換行測試內容,主要實現多行資料的自動換行,自適應不同行數的資料”;

CGSize labelSize ={0,0};

labelSize=[labelStrsizeWithFont:[UIFontsystemFontOfSize:14]

constrainedToSize:CGSizeMake(200.0,5000)

lineBreakMode:UILineBreakModeWordWrap];

//14 為UILabel的字型大小

//200為UILabel的寬度,5000是預設的一個高度,表示在這個範圍內


returnlabelSize.height + delta;

//delta 是Cell除了自適應控制項UILabel外的其它控制項所佔的高度。


}

?

?

小結:實現上面2個技術點後,評論相關的APP或者類似的APP都可以做到自適應內容,根據內容多少自動換行,自動調整控制項的位置和大小,達到最優的顯示效果。

?????

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.