"Navigation bar" 的警告框将在 运行 时不同出现在 Xcode 8 Swift 3

Warning frame for "Navigation bar" will be different at run time appears in Xcode 8 Swift 3

在我升级​​到 Xcode 8 之前,我没有在这种情况下看到这个错误。我有不同的导航控制器。对于所有这些,我都看到一个错误 Frame for "Navigation bar" will be different at the run time. Navigation bar "Expected: width=384, Actual: width=375。实际上,这些导航控制器没有 Navigation barNavigation bar 存在子视图。无论如何,我可以通过勾选和取消勾选 Attributes inspector 中的复选框 Shows navigation bar 来解决它。但不幸的是,每次我重新打开 Main.storyboard 这个警告都会再次出现。另外,如果我点击黄色三角形,然后点击更新帧,则没有任何反应。

好的,看来我已经解决了这个问题。这就是我所做的。

Select 像往常一样更新帧。打开另一个文件,然后单击故事板文件。如果这不起作用,则重新启动 Xcode。看起来它正在内部更新,但界面构建器 UI 有时会卡住。

如果将 属性 "Simulated Size" 更改为 "Freeform",警告将消失。

在Xcode 8 打补丁之前,您可以将"View as:" 选项设置为"iPhone SE" 以消除警告。不理想,但目前有效。

点击情节提要左下角的 "View As" 并选择不同的设备尺寸,然后再次点击并切换回您开始使用的设备尺寸。这对我有用。

如前所述here您可以通过切换调整滚动视图插入来解决此问题on/off。

作为一种解决方法,只是为了摆脱烦人的警告,我一直在手动编辑 Main.storyboard,方法是删除 'misplaced' in:

<navigationBar key="navigationBar" opaque="NO" contentMode="scaleToFill" misplaced="YES" translucent="NO" id="Os1-Xh-7XN">

一个 hack,但是零个警告而不是 1 个警告很好 :)

我已经从 View as: iPhone 6S 更改为 iPhone 5S,然后又改回 iPhone 6S,并且 Xcode 进行了所有更改以删除警告。

有同样的问题,这是我解决的问题:

展开错误信息并单击警告详细信息。 Xcode 应该会自动打开 dimension/position 设置。将当前值替换为警告详细信息中建议的值。

基本上,请确保运行时的大小与您在大小检查器中指定的大小相同。

您也可以单击您发布的图片旁边的图标(黄色三角形和白色圆圈。有时,它是一个红色圆圈图标),然后会出现自动 fix/adjust 问题的选项。

我选择了更新约束选项,然后相应地调整了新约束。

请在 xcode 中为视图控制器更改设备预览并编译并检查警告...

Xcode 8 有点问题,Interface builder 使用随机编号重置它,这会影响所有包含的视图。 尝试更改您的预览设备。

通过将视图控制器的模拟大小设置为自由形式,然后将宽度从 375 设置为 320,我能够完全解决这个问题。

我尝试了以上所有建议,但似乎没有用。我认为这可能是一个更严重的错误。

我已经用 Apple Bug Reporter(link: https://bugreport.apple.com/logon) 记录了一个错误 - 如果你想做同样的事情,请参考错误:31355220 以便 Apple 可以把它绑在一起。报告它的人越多 - 他们将需要越多的信息来解决这个烦恼。

这对我有用 Xcode 8.3.1 重启后Xcode,还是可以的

  1. Select 导航控制器

  1. 转到显示尺寸检查器

  1. 将模拟大小更改为自由形式

  1. 将模拟大小改回固定大小

  1. 然后警告消失。

对我来说,问题是我在推送时隐藏了底部栏(使用 IB 复选框)。

我必须 select 'none' 在 'bottom bar' 选项中:

Xcode 12

我认为这个问题主要是因为设备预览的宽度因设备而异。例如。 iPhone 12 和 iPhone 11 的屏幕宽度不同。如果您为某些视图的宽度设置一个固定值并给它一些约束,那么它可能不会采用您当前预览的 iPhone 的屏幕宽度,因此它会抱怨“运行 时间内的尺寸不同”。

对我来说,我在带有 iPhone 11 预览的尺寸检查器中将 UIView 和 ImageView 的宽度和高度设置为固定值。并在 IB 中为其提供固定的 10 点前导和尾随约束。如果我切换到 iPhone 12 预览,它就会抱怨。

为了修复它,我 select viewController 并选择了“更新帧”。然后它看起来好多了,但是 Xcode 在更改后仍然抱怨一个冲突约束。最终,我在IB中手动找到并修复了它。