在我升级到 Xcode 8
之前,我没有在这种情况下看到此错误。我有不同的导航控制器。对于所有这些,我看到一个错误 Frame for "Navigation bar" will be different at the run time. Navigation bar "Expected: width=384, Actual: width=375
。实际上,这些导航控制器没有 Navigation bar
。 Navigation bar
存在于子视图中。无论如何,我可以通过勾选并取消勾选 Attributes inspector
中的复选框 Shows navigation bar
来解决它。但不幸的是,每次我重新打开 Main.storyboard
时都会再次出现此警告。此外,如果我单击黄色三角形,然后单击更新帧,则不会发生任何事情。
https://i.stack.imgur.com/6oRfI.png
如果您将属性“模拟尺寸”更改为“自由形式”,警告将消失。
https://i.stack.imgur.com/tj9Nu.png
如前所述 here,您可以通过打开/关闭调整滚动视图插图来解决此问题。
misplaced="YES"
被删除。 :/
我已从 View as: iPhone 6S 更改为 iPhone 5S,然后改回 iPhone 6S,Xcode 进行了所有更改以删除警告。
这在 Xcode 8.3.1 对我有用 重新启动 Xcode 后,它仍然可以工作。
https://i.stack.imgur.com/CxWu2.png
选择导航控制器
https://i.stack.imgur.com/A6gWW.png
转到显示尺寸检查器
https://i.stack.imgur.com/Zm4bq.png
将模拟大小更改为自由形式
https://i.stack.imgur.com/48sTM.png
将模拟大小更改回固定
https://i.stack.imgur.com/S8oAw.png
然后警告消失。
https://i.stack.imgur.com/9S8vf.png
作为一种解决方法,只是为了摆脱烦人的警告,我一直在手动编辑 Main.storyboard,方法是删除“misplaced”:
<navigationBar key="navigationBar" opaque="NO" contentMode="scaleToFill" misplaced="YES" translucent="NO" id="Os1-Xh-7XN">
一个黑客,但零警告而不是 1 是很好的 :)
单击情节提要左下方的“查看为”并选择不同的设备尺寸,然后再次单击它并切换回您开始使用的设备尺寸。这对我有用。
在 Xcode 8 修补之前,您可以将“查看为:”选项设置为“iPhone SE”以消除警告。不理想,但目前有效。
misplaced
属性。
我尝试了上述所有建议,但似乎没有用。我认为这可能是一个更严重的错误。
我已经使用 Apple Bug Reporter(链接:https://bugreport.apple.com/logon)记录了一个错误 - 如果您想这样做,请参考错误:31355220
,以便 Apple 可以将其捆绑在一起。报告它的人越多 - 他们将需要更多的信息来解决这个烦恼。
通过将视图控制器的模拟大小设置为自由格式,然后将宽度从 375 设置为 320,我能够完全摆脱这个问题。
有同样的问题,这是我要解决的问题:
展开错误信息并单击警告详细信息。然后 Xcode 应该会自动打开尺寸/位置设置。将当前值替换为警告详细信息中建议的值。
https://i.stack.imgur.com/xtS0z.png
基本上,请确保运行时中的尺寸与您在尺寸检查器中指定的尺寸相同。
您也可以单击您发布的图像旁边的图标(带有白色圆圈的黄色三角形。有时,它是一个红色圆圈图标)然后会有选项来自动修复/调整问题。
https://i.stack.imgur.com/OJyvB.png
我选择了更新约束选项,然后相应地调整了新的约束。
对我来说,问题是我在推送时隐藏了底部栏(使用 IB 复选框)。
我必须在“底栏”选项中选择“无”:
https://i.stack.imgur.com/S87Qq.png
好的,看来我已经解决了这个问题。这就是我所做的。
像往常一样选择更新帧。打开一个不同的文件,然后单击故事板文件。如果这不起作用,请重新启动 Xcode。看起来它正在内部更新,但界面构建器 UI 有时会卡住。
main.storyboard
,这些警告会再次出现
请在 xcode 中为 View 控制器更改您的设备预览并编译并检查警告...
Xcode 8 有点错误,Interface builder 用随机 no 重置它,这会影响所有包含的视图。尝试更改您的预览设备。
Xcode 12
我认为这个问题主要是因为不同设备的设备预览宽度不同。例如 iPhone 12 和 iPhone 11 有不同的屏幕宽度。如果你在某个视图的宽度上设置了一个固定值并给它一些约束,那么它可能不会采用你当前预览的 iPhone 的屏幕宽度,所以它会抱怨“运行时大小不同”。
对我来说,我在 iPhone 11 预览中将 UIView 和 ImageView 的宽度和高度设置为大小检查器中的固定值。并给它在 IB 中固定 10 个点的前导和尾随约束。然后它抱怨如果我切换到 iPhone 12 预览版。
为了解决这个问题,我选择了 viewController 并选择了“Update Frames”。然后它看起来更好,但 Xcode 在更改后仍然抱怨一个冲突约束。最终,我在 IB 中手动找到并修复了它。
misplaced="YES"
。这是一个 Xcode 错误,此修复是一种强制刷新。 取自@buildsucceeded 答案。