我在“动态”UITableViewCell中使用带有numberOfLines=0
和lineBreakMode = NSLineBreakByWordWrapping
的UILabel。我利用AutoLayout将标签贴在顶部,底部,尾部和前缘的容器单元中。在iOS7中,标签的高度随其内容动态更新,但在iOS8中它会过早地截断(通常在1行,但有时在2行)。在iOS8中,我已经确认标签的intrinsicContentSize
是按预期动态更新的,但标签的框架并不适用。以下是iOS7和iOS8之间的区别:
我已经阅读过iOS8中的类似错误,但无法实现变通方法。我已尝试将标签的文字设置为@""
并返回@"Abraham Lincoln: Vampire Hunter"
(如上所述in this question),但这并未解决问题。另请注意,在iOS8中,单元格大小确实会根据标签的intrinsicContentSize
而增加,但无论出于何种原因,标签本身的高度都不会增加。任何建议将不胜感激。我很乐意提供更多信息。
iOS 8
iOS 7
答案 0 :(得分:3)
这是我的走动 UILabel的子类,并覆盖此函数。
-(CGRect)textRectForBounds:(CGRect)bounds
limitedToNumberOfLines:(NSInteger)numberOfLines
{
CGRect rect = [super textRectForBounds:bounds
limitedToNumberOfLines:numberOfLines];
float height = rect.size.height;
int hightRound = (int)roundf(height);
rect.size.height = hightRound;
return rect;
}