Sea*_*ser 5 uitableview uiview uilabel ios
我正在尝试计算UITableViewCell的高度,所以我定义了一个类似于此的类方法
+ (CGFloat)heightWithText:(NSString *)text
{
SizingLabel.text = text;
[SizingLabel sizeThatFits:CGSizeMake(LABEL_WIDTH, CGFLOAT_MAX)];
return (TOP_MARGIN + SizingLabel.frame.size.height + BOTTOM_MARGIN);
}
Run Code Online (Sandbox Code Playgroud)
我已经像这样定义了SizingLabel:
+ (void)initialize
{
SizingLabel = [[UILabel alloc] initWithFrame:CGRectZero];
SizingLabel.numberOfLines = 0;
SizingLabel.lineBreakMode = NSLineBreakByWordWrapping;
}
Run Code Online (Sandbox Code Playgroud)
但是,如果我在-heightWithText:方法中粘贴断点,我会注意到SizingLabel的尺寸永远不会改变,因此我得到一个不正确的值.这是为什么?
如上所述,sizeThatFits:(并因此sizeToFit)不适合UILabel对象.
您最好使用首选textRectForBounds:limitedToNumberOfLines:方法:
+ (CGFloat)heightWithText:(NSString *)text
{
resizingLabel.text = text;
CGSize labelSize = [resizingLabel textRectForBounds:CGRectMake(0.0, 0.0, LABEL_WIDTH, CGFLOAT_MAX)
limitedToNumberOfLines:0].size; // No limit
return (TOP_MARGIN + labelSize.height + BOTTOM_MARGIN);
}
Run Code Online (Sandbox Code Playgroud)
+ (CGFloat)heightWithText:(NSString *)text
{
SizingLabel.text = text;
CGSize labelSize = [SizingLabel sizeThatFits:CGSizeMake(LABEL_WIDTH, CGFLOAT_MAX)];
return (TOP_MARGIN + labelSize.height + BOTTOM_MARGIN);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18297 次 |
| 最近记录: |