- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(nullable NSDictionary<NSString *, id> *)attributes context:(nullable NSStringDrawingContext *)context NS_AVAILABLE(10_11, 7_0);
这个方法是 iOS7 以后根据宽高属性计算字符串高度的一个方式.不同的属性会计算出不同的值.具体的可以谷歌下NSStringDrawingOptions.
这里只讨论计算多行的高度.
1.请设置NSStringDrawingOptions的值为
NSStringDrawingUsesFontLeading|NSStringDrawingUsesLineFragmentOrigin
2.用到NSParagraphStyleAttributeName属性时
不要设置NSMutableParagraphStyle.lineBreakMode
为
NSLineBreakByClipping
NSLineBreakByTruncatingHead
NSLineBreakByTruncatingMiddle
NSLineBreakByTruncatingTail
不然高度会一直为一行.
如果用这个方法计算高度跟预想的不一样,一般是各种属性设置不正确,可以检查或者删除一些不影响高度计算的属性再去尝试.
网友评论