NSString * labelStr = @「你好,這是UILabel的自動換行測試內容,主要實現多行數據的自動換行,自適應不一樣行數的數據」;測試
CGSize labelSize = {0, 0};字體
labelSize = [labelStr sizeWithFont:[UIFont systemFontOfSize:14]spa
constrainedToSize:CGSizeMake(200.0, 5000)code
lineBreakMode:UILineBreakModeWordWrap];it
//14 爲UILabel的字體大小table
//200爲UILabel的寬度,5000是預設的一個高度,表示在這個範圍內class
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的位置和寬度,只是改變高度。技術
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSString * labelStr = @「你好,這是UILabel的自動換行測試內容,主要實現多行數據的自動換行,自適應不一樣行數的數據」;
CGSize labelSize = {0, 0};
labelSize = [labelStr sizeWithFont:[UIFont systemFontOfSize:14]
constrainedToSize:CGSizeMake(200.0, 5000)
lineBreakMode:UILineBreakModeWordWrap];
//14 爲UILabel的字體大小
//200爲UILabel的寬度,5000是預設的一個高度,表示在這個範圍內
return labelSize.height + delta;
//delta 是Cell除了自適應控件UILabel外的其它控件所佔的高度。
}
小結:實現上面2個技術點後,評論相關的APP或者相似的APP均可以作到自適應內容,根據內容多少自動換行,自動調整控件的位置和大小,達到最優的顯示效果。