获取 UILabel 中的行数


许多

针对同一问题的旧解决方案已被弃用(UILineWordWrap,仅举一个已弃用的解决方案)。我也发现其中一些不可靠。那么,在 IOS 8 中,我应该如何找到 uilabel 中的行数?

iOS8 开始,您可以使用 [NSString boundingRectWithSize:options:attributes] 来获取给定字符串的高度。

NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.lineBreakMode = label.lineBreakMode;
NSDictionary *attributes = @{NSFontAttributeName: label.font, NSParagraphStyleAttributeName: paragraphStyle.copy};
NSInteger options = NSStringDrawingUsesLineFragmentOrigin;
CGRect rect = [self boundingRectWithSize:CGSizeMake(width, CGFLOAT_MAX) options:options attributes:attributes context:nil];
NSInteger numberOfLines = floor(ceilf(rect.size.height) / label.font.lineHeight);

作为替代方法;如果您已经设置了标签的宽度,也可以按如下方式使用[UILabel: sizeToFit]方法:

label.numberOfLines = 0;
label.lineBreakMode = NSLineBreakByWordWrapping;
[label sizeToFit];
NSInteger numberOfLines = floor(ceilf(CGRectGetHeight(label.frame)) / label.font.lineHeight);

最新更新