- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(nullable NSDictionary<NSString *, id> *)attributes context:(nullable NSStringDrawingContext *)context NS_AVAILABLE(10_11, 7_0);
// 参数1: 自适应尺寸,提供一个宽度,去自适应高度
// 参数2:自适应设置 (以行为矩形区域自适应,以字体字形自适应)
// 参数3:文字属性,通常这里面需要知道是字体大小
// 参数4:绘制文本上下文,做底层排版时使用,填nil即可
pragma mark -获取文本宽度计算逻辑
#pragma mark -----计算文本宽度
-(CGFloat)getLabel:(NSString*)label withFontAttributeName:(UIFont*)font{
NSDictionary*attribute =@{NSFontAttributeName: font};
CGSize size = [label boundingRectWithSize:CGSizeMake(MAXFLOAT,0) options:NSStringDrawingTruncatesLastVisibleLine|NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading attributes:attribute context:nil].size;
return size.width+20;
}
获取文本高度计算逻辑
- (CGSize)getLabel:(NSString*)label withFontAttributeName:(UIFont*)font{
NSDictionary*attribute =@{NSFontAttributeName: font};
CGSize size = [label boundingRectWithSize:CGSizeMake(kScreenWidth,500) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:attribute context:nil].size;
return size;
}
//上面方法在计算文字高度的时候可能得到的是带小数的值,如果用来做视图尺寸的适应的话,需要使用更大一点的整数值.取整的方法使用ceil函数
return height + ceil(infoRect.size.height);