如何UITableViewCell在表格视图中使用s 内的自动布局,让每个单元格的内容和子视图确定行高(本身/自动),同时保持平滑的滚动性能?
在我正在创建的iOS 8应用程序中,我有一个tableview,我需要它们自我调整大小.我使用自动布局实现它,它的工作原理.几乎.这是它现在的样子.

单元格内有3个标签.主要标签有lorem ipsum文本.带有数字串的字幕(这是两个单独的标签.可能会因为颜色相同而混淆.)然后第三个标签带有小黑色文字.
第一个标签正确调整大小没有问题,第二个标签相应地上下移动.但问题在于第三个小标签.正如您所看到的,它没有调整自身大小以适应所有文本.
现在发生了一件奇怪的事情.我把它转向风景,这就是它.

由于存在空间,标签正在显示其应有的整个文本.精细.然后我把它变回肖像.

现在,小标签已经调整大小以适应其所有文本,但它溢出了单元格边界.我试着把细胞做大,但是没用.由于这是自我调整细胞,我不认为这是正确的方法.
我没有收到任何错误,甚至没有警告我的汽车布局限制.

我在方法中设置了这两行代码viewDidLoad().
tableView.estimatedRowHeight = 100
tableView.rowHeight = UITableViewAutomaticDimension
Run Code Online (Sandbox Code Playgroud)
谁能告诉我这里可能做错了什么?
由于仅仅通过查看图像很难回答,而且我没有更多的代码可以在上面的代码段旁边发布,我上传了一个可运行的Xcode项目,在这里展示了这个问题.(有2个自定义单元格.基本上它是同一个单元格,只是高度在第二个单元格中增加.)
我一直在摆弄汽车布局限制,但我似乎无法让这个工作.任何帮助,将不胜感激.
谢谢.
更新:
在本教程的帮助下,我发现了一些有用的指针.根据它,每个子视图应该具有固定其所有边的约束,并且应该存在从上到下的约束,这有助于自动布局以计算单元的高度.在我的原始帖子中,我在每个标签之间有垂直空间,所以我认为这是自动布局无法计算正确高度的原因.
所以我做了一些改变.
现在这是另一个奇怪的部分.当我第一次运行它时,底部标签裁剪问题仍然存在.

但是,如果我将设备旋转到横向并将其转回肖像,则所有单元格都会正确调整大小以适合两个标签!

仍然无法弄清楚为什么一开始不会发生这种情况.更新的Xcode项目在这里.
我在 tableviewcell 内的 UILabels 中截断文本有问题。到目前为止,我已阅读并测试了以下链接中的解决方案(以及许多其他类似链接):
但如果我使用“标准”顶部、前导、尾部和底部自动布局约束设置单元格,我似乎无法让它在第一次加载时工作。但是,如果我取消选中超级视图项的“相对边距”并使用例如等于:默认值,我可以
如果我旋转设备或再次向下和向上滚动,它适用于这两种情况。
标签与自定义单元上的出口相连,并在原型单元中垂直放置;它们每个都有三个超级视图约束,标签之间有一个“标准”的垂直距离。拥抱优先级在最上面的标签上设置得更高,以消除 IB 中的警告,即使这对结果无关紧要。
相关代码:
TableViewController.m
- (void)viewDidLoad {
[super viewDidLoad];
if (NSFoundationVersionNumber > NSFoundationVersionNumber_iOS_7_1) {
self.tableView.estimatedRowHeight = self.tableView.rowHeight;
self.tableView.rowHeight = UITableViewAutomaticDimension; }
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
TableViewCellIB *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
[cell adjustSizeToMatchWidth:CGRectGetWidth(self.tableView.frame)];
cell.titleLabel.text = @"Veeeeeeeery looooooooooooooooong Tiiiiitle";
cell.messageLabel.text = @"Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut …Run Code Online (Sandbox Code Playgroud) ios ×3
uitableview ×3
autolayout ×2
ios8 ×1
nsautolayout ×1
objective-c ×1
row-height ×1
swift ×1