我如何计算固定宽度的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。