我如何计算固定宽度的UILabel的行数?
如何计算具有固定宽度和给定文本的UILabel的行数?
此代码假定label
具有所需的文本,并且其框架已被设置为所需的宽度。
- (int)lineCountForLabel:(UILabel *)label { CGSize constrain = CGSizeMake(label.bounds.size.width, FLT_MAX); CGSize size = [label.text sizeWithFont:label.font constrainedToSize:constrain lineBreakMode:UILineBreakModeWordWrap]; return ceil(size.height / label.font.lineHeight); }
更新 :
如果您只想根据文本和当前宽度确定标签所需的高度,则将其更改为:
- (CGSize)sizeForLabel:(UILabel *)label { CGSize constrain = CGSizeMake(label.bounds.size.width, FLT_MAX); CGSize size = [label.text sizeWithFont:label.font constrainedToSize:constrain lineBreakMode:UILineBreakModeWordWrap]; return size; }
返回的size
是包含标签的正确宽度和高度。
首先使用constrainedSize
从标签大小中获取标签的高度
CGSize labelSize = [label.text sizeWithFont:label.font constrainedToSize:label.frame.size lineBreakMode:UILineBreakModeWordWrap]; CGFloat labelHeight = labelSize.height;
一旦你有标签的高度,然后检查字体大小的行数,其中字体大小是你用于标签的大小。 例如它可能是10或根据您的要求
CGSize sizeOfText = [label.text sizeWithFont:label.font constrainedToSize:label.frame.size lineBreakMode:UILineBreakModeWordWrap]; int numberOfLines = sizeOfText.height / label.font.pointSize;
您可以使用NSString上的sizeWithFont:constrainedToSize:方法计算显示string所需的垂直高度。 给定这个尺寸,你可以调整标签大小来显示整个string。