前言:在實際的開發(fā)過程中經(jīng)常會遇到計算文本的高度及添加行間距,現(xiàn)在總結(jié)幾種處理方式
1.用NSString的這種方法,寬度限定,計算高度,或者高度限定計算寬度,簡單方便
CGRect titleSize = [data.content boundingRectWithSize:CGSizeMake(300,MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14]} context:nil];
2.用Label的自適應來計算高度
UILabel *contentLabel = [UILabel new];
contentLabel.font = [UIFont boldSystemFontOfSize:15];
contentLabel.textColor = [UIColor colorWithRGB:0x333333 alpha:1.0];
contentLabel.text = @"這是一段計算高度的文本。。。。。。";
contentLabel.numberOfLines = 0;
contentLabel.lineBreakMode = NSLineBreakByWordWrapping;
//計算label的高度
CGSize baseSize = CGSizeMake(SCREEN_WIDTH -30, CGFLOAT_MAX);
CGSize labelSize = [contentLabel sizeThatFits:baseSize];
CGFloat height = labelSize.height;
NSLog(@"height = %f",height);
3.使用UITextView的內(nèi)容自適應
代碼與label的自適應類似,就不貼代碼了。
4.設置行間距
NSString *content = @"這是一段設置行間距為5的文本。。。。。。。";
NSMutableAttributedString *attriString = [[NSMutableAttributedString alloc] initWithString: content];
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
[paragraphStyle setLineSpacing:5];//設置距離
[attriString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [content length])];
contentLabel.attributedText = attriString;
設置了行間距的文本,用第二種方式能夠計算出設置了行間距的文本的高度,很適用。