我在“动态” UITableViewCell中将UILabels与numberOfLines=0
和lineBreakMode = NSLineBreakByWordWrapping
一起使用。我利用AutoLayout将标签粘贴到其容器单元的顶部,底部,尾部和前缘。在iOS7中,标签的高度会随其内容动态更新,但是在iOS8中,标签的高度会被过早地截断(通常在1行,但有时在2行)。在iOS8中,我已经确认标签的intrinsicContentSize
正在按预期动态更新,但是标签的框架不符合要求。这是iOS7和iOS8之间的区别:
我已阅读过iOS8中的类似错误,但无法实现解决方法。我尝试将标签的文本设置为@""
并重新设置为@"Abraham Lincoln: Vampire Hunter"
(如上所述in this question),但这不能解决问题。还要注意,在iOS8中,单元格的大小确实会根据标签的intrinsicContentSize
增大,但是由于某种原因,标签本身的高度不会增加。任何建议将不胜感激。我也很高兴提供更多信息。
iOS 8
iOS 7
最佳答案
这是我的转转
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;
}
关于ios - iOS8中的多行/动态UILabel截断,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26089238/