iOS根据字符串长度设置UILabel的宽高

  • 在开发中有时候返回的字符串长度是不固定的,这时候要想全部展现出来,就需要根据返回的文字和文字大小去计算宽高.
  • NSString (NSExtendedStringDrawing)分类中提供了相关api:
/*
 参数1: 自适应尺寸,提供一个宽度,去自适应高度
 参数2:自适应设置 (以行为矩形区域自适应,以字体字形自适应)
 参数3:文字属性,通常这里面需要知道是字体大小
 参数4:绘制文本上下文,做底层排版时使用,填nil即可
*/
- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(nullable NSDictionary<NSAttributedStringKey, id> *)attributes context:(nullable NSStringDrawingContext *)context
  • 实例:
 NSString * str = @"在开发中有时候返回的字符串长度是不固定的,这时候要想全部展现出来,就需要根据返回的文字和文字大小去计算宽高";
 CGRect contentRect = [str boundingRectWithSize:CGSizeMake([UIScreen mainScreen].bounds.size.width - 40, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14]} context:nil];

示例中宽度固定为屏幕宽度减去40,高度默认最大,然后根据文字大小计算合适的Rect,及得到合适的高度.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...