我在“动态” UITableViewCell中将UILabels与numberOfLines=0lineBreakMode = 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/

10-12 14:47