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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了项目从Xcode 8转换为Xcode 9时自动布局失败相关的知识,希望对你有一定的参考价值。

我有一个应用程序在Xcode 8中工作。将其导入Xcode 9后,autolayout失败。多行UILabels仅显示1行。 UITableView中的多行UIlabels也显示1行。我没有约束问题。

我用了类似的东西

tableView.rowHeight = UITableViewAutomaticDimension
tableView.estimatedRowHeight = 100 

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

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

有人遇到过这样的问题吗?有没有办法在转换后的项目中修复我的自动布局而无需重新执行所有操作?

编辑

看起来有人正面临类似的问题here

编辑2017.10.18

一种可能的解决方案,有些黑客攻击; here

答案

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

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

这导致了不可预测的行为。这是我的错。删除该功能以前覆盖intrinsicContentSize固定以下;

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

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

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

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

在 xcode 5 中部署目标 5.1 时如何使用自动布局

Swift 自动布局在 Xcode 9.3 中不起作用

Xcode 9:无法渲染和更新“VC”T..s.framework 的自动布局状态:需要为“TextFieldEffects.framework”移动代码签名

自动布局不会在 iOS 8-Xcode 6 中立即更新帧