通过字符串计算和文本属性计算文本高度。
- (NSRect)boundingRectWithSize:(NSSize)size options:(NSStringDrawingOptions)options attributes:(NSDictionary<NSAttributedStringKey, id> *)attributes;
可以放在工具类中,便于复用。
-(CGSize)configureTextSizeWithString:(NSString *)string WithFont:(NSFont *)font WithSize:(CGSize)maxSize
{
if (string == nil)
{
NSLog(@"%s , 计算文本为空。",__func__);
return CGSizeZero;
}
CGRect stringRect;
stringRect = [string boundingRectWithSize:maxSize
options:(NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading)
attributes:@{
NSFontAttributeName:font //可以添加其它文本属性
}
context:nil];
return stringRect.size;
}
通过视图计算文本高度。
- (CGSize)sizeThatFits:(CGSize)size;
{
if (view == nil)
{
NSLog(@"%s , 计算文本的视图为空。",__func__);
return CGSizeZero;
}
CGSize fitSize ;
fitSize = [view sizeThatFits:maxSize];//sizeThatFits 在maxSize的范围内,计算出最优的size,不会改变maxSize。
//sizeToFit会计算出最优的size,而且会改变自己的size。
return fitSize;
}
网友评论