从 Xcode 8 转换为 Xcode 9 的项目的自动布局失败

Posted

技术标签:

【中文标题】从 Xcode 8 转换为 Xcode 9 的项目的自动布局失败【英文标题】:Auto-layout fails on Project Converted from Xcode 8 to Xcode 9 【发布时间】:2017-10-17 03:09:54 【问题描述】:

我有一个在 Xcode 8 中运行的应用程序。将其导入 Xcode 9 后,自动布局失败。 多行 UILabel 仅显示 1 行。 UITableView 中的多行 UIlabels 也显示 1 行。我没有约束问题。

我用过类似的东西

tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 100 

当我在转换后的项目中实现here 所示的解决方案时,自动布局失败

但是如果我在 Xcode 9 中创建了一个新项目并实现了与上面链接中给出的相同的解决方案,自动布局有效!

有人遇到过这样的问题吗?有没有办法在转换后的项目中修复我的自动布局而不重新做所有事情?

编辑

看起来有人遇到了类似的问题here。

编辑 2017.10.18

一个可能的解决方案,有点hack-ish; here

【问题讨论】:

【参考方案1】:

经过进一步研究,我从以下帖子中找到了答案; https://***.com/a/28545177/1179312

在升级到 XCode9 之前发生了什么,我确实在 UILabel 的扩展中覆盖了 intrinsicContentSize我决定不使用它,但忘记将它从我的项目中删除。然后我升级到 XCode 9,让我很困惑。

这导致了不可预测的行为。是我的错。删除该函数之前覆盖 intrinsicContentSize 修复了以下问题;

自动布局问题 多行标签问题

【讨论】:

以上是关于从 Xcode 8 转换为 Xcode 9 的项目的自动布局失败的主要内容,如果未能解决你的问题,请参考以下文章

如何将 xcode 8 故事板转换为 xcode 9

升级到 Xcode 8 并将语法从 swift 2.3 转换为 swift 3.0 后文件丢失警告

xcode从8升级到9出现的问题

带有 xCode 8 的 RealmSwift

Xcode 9 - iOS 8 图像变得奇怪扭曲

自动布局问题 Xcode 8 [_SwiftValue nsli_superitem]