iOS之UILabel的自動換行


思路:

  1. 獲取UILabel的frame大小
  2. 獲取UILabel的字體大小
  3. 獲取UILabel的文本內容
  4. 根據上面的3部分數據,計算文本顯示區域大小
  5. 根據4計算的大小,實時改變UILabel的frame

實現:

 1 UILabel *label = [[UILabel alloc] init];
 2 
 3     label.text = @"你好,這是UILabel的自動換行測試內容,主要實現多行數據的自動換行,自適應不同行數的數據";
 4 
 5     NSDictionary *attribute = @{NSFontAttributeName: [UIFont systemFontOfSize:14]};
 6 
 7     CGSize labelSize = [label.text boundingRectWithSize:CGSizeMake(200, 5000) options: NSStringDrawingTruncatesLastVisibleLine | NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:attribute context:nil].size;
 8 
 9 //200為UILabel的寬度,5000是預設的一個高度,表示在這個范圍內
10 
11 //注意:之前使用了NSString類的sizeWithFont: constrainedToSize: lineBreakMode:方法,但是該方法已經被iOS7 Deprecated了,而iOS7新出了一個boudingRectWithSize: options: attributes: context:方法來代替。
12 
13     label.frame = CGRectMake(label.frame.origin.x, label.frame.origin.y, label.frame.size.width, labelSize.height);
14 
15 //保持原來Label的位置和寬度,只是改變高度。
16 
17     label.numberOfLines = 0;//表示label可以多行顯示
18 
19     label.textColor = UICOLOR_FROM_RGB(100, 100, 100, 1);
20 
21     label.font = [UIFont systemFontOfSize:14];
22 
23     [self.view addSubview:label];
24 
25  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM