XCode 6.1,自动布局和大小类 - iOS 7 上的问题,而不是 iOS 8 上的问题



我遇到了一个奇怪的问题。起初,当我将多个视图设置为相等宽度和相等的前导\尾随约束时,它发生在一个应用程序上。在iOS 8.x上一切正常,但在iOS 7.x上,我看到最后一个视图的尾随约束丢失了。

这没什么大不了的,但现在我有一个大问题。我正在开发一个新应用程序,其中一个功能是与用户聊天。我已经设置了两个可能的表格单元格(传入消息和传出消息)。每个单元格都包含一个 UITextView 来保存文本(它需要标识链接和电话号码)。textView 的大小取决于内容文本,"气泡"的大小会根据其大小而变化。同样,在iOS 8.x上一切正常!!甜!再说一遍...iOS 7.x无法做到这一点!如果没有明显的原因,文本被截断,单词消失,换行不知从何而来。我没有调整文本视图大小的实现...这一切都是基于自动布局的。

我该如何解决这个问题。我寻找了一个答案,但我什至不知道如何描述它。帮助?任何人?

编辑:

昨天休息了一天:)感谢您的回复...

我有我设置的约束的图像...约束

现在,在我的 tableView 的 heightForRowAtIndexPath 中,我返回一个由消息对象计算的高度:

- (CGFloat)height {
    
    CGRect rect = [self.body boundingRectWithSize:CGSizeMake(210.0, CGFLOAT_MAX)
                                          options:NSStringDrawingUsesLineFragmentOrigin
                                       attributes:@{NSFontAttributeName:[UIFont fontWithName:@"OpenSans" size:15.0]}
                                          context:nil];
    return rect.size.height + kCellHeightDelta;
}

我不想使用别人的图书馆,无论它有多好。我的客户对他想要的样子有他的愿望,宁愿投入更多的时间,做适合项目的事情,而不是在不了解我错过什么的情况下复制粘贴别人的实现。但我真的很感激。

iOS7 中的单元格布局需要相当多的手握才能获得正确的单元格高度。您必须使用屏幕外原型单元格计算高度,除非您通过其他机制知道确切的高度,并以 heightForRowAtIndexPath 为单位返回此高度。

大小类还为此增加了一个额外的维度,因为使用dequeueCellWithIdentifier创建的原型单元格中没有定义的大小类。

以下讨论链接到要使用的机制,以及处理大小类和手动单元格高度计算问题的简洁解决方案。

屏幕外 UITableViewCells(用于大小计算)不考虑大小类?

最新更新