编辑:我认为这可能与iOS 8.3有关。这不会发生在模拟器上,我的测试人员都没有问题,但我的开机手机上有8.3。关于如何解决它的任何想法?
edit2:我在这里找到了答案https://stackoverflow.com/a/36711109/1552116。我已经在下面回答了这个问题,并且会在2天内接受,但我想这在技术上是重复的吗?
我有一个UITableView
,其rowHeight设置为UITableViewAutomaticDimension
每个单元格包含多个标签,其中一个标签可以是多行标签。有时,单元格正确显示,标签占用多行。其他时候,单元格大小正确,但标签只占用一行,留下一个空的空间,其他行应该已经消失。
tableview由NSFetchedResultsController
支持。
图片显示我的意思(要清楚"预期"不是渲染,它是应用程序在某些时间工作的实际屏幕截图)
页面上有一个刷新操作,我已尝试tableView.reloadData()
,tableView.setNeedsLayout()
并且两者似乎都没有帮助
我注意到,如果我在创建通知时在tableView上,它会正确显示。如果我强制退出应用程序(或从XCode再次运行应用程序)并从获取结果初始化单元格,则会错误地显示它们。
这个应用程序也在testflight
上,我们没有约5名测试人员报告过这个问题。
设置标签的代码 的cellForRowAtIndexPath
let cell = tableView.dequeueReusableCellWithIdentifier(StoredNotificationViewController.snTableViewCellReuseIdentifier, forIndexPath: indexPath) as! StoredNotificationTableViewCell
configureCell(cell, atIndexPath: indexPath)
configureCell
let storedNotification = snFetchedResultsController.objectAtIndexPath(indexPath) as? StoredNotification
cell.setData(storedNotification)
cell.setData
messageLabel.text = notification.message
答案 0 :(得分:4)
答案在https://stackoverflow.com/a/36711109/1552116
基本上,你将cell.updateConstraintsIfNeeded()
添加到tableView(_:cellForRowAtIndexPath :)方法的末尾
答案 1 :(得分:0)
确保所有约束都连接到Cell的边缘,因此它知道它的高度是什么。如果您已经这样做,请尝试将垂直内容拥抱优先级设置为751并将垂直内容压缩阻抗优先级设置为该标签的751。您还可以将该标签的底部约束优先级设置为750.如果有帮助,请告诉我。