为什么模态呈现视图控制器会破坏表格视图中的自动布局?

Dou*_*ith 6 uitableview uiview ios autolayout nslayoutconstraint

示例项目: http ://cl.ly/1o2K2m2r262q

我有一个UITableView自定义单元格,其高度从自动布局自动计算.自定义单元格中有三个标签,每个标签在彼此之间以及内容视图之间具有垂直间距,并从左侧推开.

当我输入数据并加载时,它工作得很好.

但是,当我从托管表视图的视图控制器模态呈现视图控制器时,我注意到它在我返回到原始视图控制器时完全中断了自动布局.

什么会导致这个?我将数据填充到一个简单的数组中,该数组充当表视图数据源的模型,然后它只是自动布局.这是一个如此简单的项目,我很困惑,它会搞乱.

另外:我很欣赏rdelmar的答案,但我简直无法相信现在没有一个应用程序可以利用iOS 8的这种动态单元格功能而不会产生非常跳跃的表格视图.这将是令人难以置信的显着.有人必须找到一种方法来使这项工作,否则他们永远不会发货.

rde*_*mar 2

你有几个问题。在故事板中,场景列表中有一个红色警告箭头。你不应该忽视这一点。单击它并进行它建议的更改(首先执行压缩阻力值,我认为拥抱的内容会自行消失)。

在 MasterViewController 的 viewDidLoad 中,添加自调整单元格大小所需的这两行,

self.tableView.estimatedRowHeight = 120
self.tableView.rowHeight = UITableViewAutomaticDimension // you may not need this one, I think it might be the default now
Run Code Online (Sandbox Code Playgroud)

最后,我发现当我在故事板中创建单元格(而不是在代码中)时,我需要将以下方法添加到单元格类中,以便布局立即发生(否则它不会正确布局,直到您滚动或旋转),

override func didMoveToSuperview() {
        self.layoutIfNeeded()
    }
Run Code Online (Sandbox Code Playgroud)