“导航栏”的警告框在运行时将显示在XCode 8 Swift 3中

时间:2016-09-21 15:46:23

标签: ios swift xcode uinavigationbar xcode8

在我升级到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。无论如何,我可以通过勾选解决它并取消勾选Shows navigation bar中的复选框Attributes inspector。但不幸的是,每次重新打开Main.storyboard时,此警告都会再次出现。此外,如果我点击黄色三角形,然后在更新帧上没有任何事情发生。任何想法?

enter image description here

14 个答案:

答案 0 :(得分:153)

如果将属性“模拟大小”更改为“自由形式”,警告将消失。

答案 1 :(得分:34)

正如前面提到的here,你可以通过打开/关闭调整Scrollview Insets来解决这个问题。

答案 2 :(得分:15)

我已从View为:iPhone 6S更改为iPhone 5S,然后更改回iPhone 6S,Xcode执行了所有更改以删除警告。

答案 3 :(得分:12)

这在Xcode 8.3.1中对我有用 重新启动Xcode后,它仍然有效。

enter image description here

  1. 选择导航控制器
  2. enter image description here

    1. 转到显示尺寸检查器
    2. enter image description here

      1. 将模拟尺寸更改为自由形式
      2. enter image description here

        1. 将模拟尺寸更改回固定
        2. enter image description here

          1. 然后警告消失。
          2. enter image description here

答案 4 :(得分:7)

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

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

一个hack但是很好的是没有警告而不是1:)

答案 5 :(得分:6)

单击情节提示板左下角的“查看方式”,选择不同的设备大小,然后再次单击它并交换回您开始使用的设备大小。这对我有用。

答案 6 :(得分:3)

在修补Xcode 8之前,您可以将“查看为:”选项设置为“iPhone SE”以消除警告。不理想,但现在有效。

答案 7 :(得分:3)

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

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

答案 8 :(得分:2)

通过将视图控制器的模拟大小设置为自由形式然后将宽度设置为375到320,我完全可以摆脱这个问题。

答案 9 :(得分:1)

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

展开错误信息,然后单击警告详细信息。然后Xcode应自动打开尺寸/位置设置。将当前值替换为警告详细信息中建议的值。

enter image description here

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

您还可以点击您发布的图片旁边的图标(带有白色圆圈的黄色三角形。有时,它是一个红色圆圈图标),然后会有自动修复/调整问题的选项。

enter image description here

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

答案 10 :(得分:1)

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

我必须选择“没有”&#39;在&#39;底栏&#39;选项:

enter image description here

答案 11 :(得分:0)

好的,所以看起来我已经解决了这个问题。这就是我的所作所为。

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

答案 12 :(得分:0)

请更改您的设备预览xcode for View控制器并编译并检查警告......

Xcode 8有点错误,接口构建器使用随机no重置它,这会影响所有包含的视图。 尝试更改预览设备。

答案 13 :(得分:0)

Xcode 12

我认为这个问题主要是由于每种设备的设备预览宽度不同。例如。 iPhone 12和iPhone 11具有不同的screenWidth。如果您在某个视图的宽度上设置一个固定值并赋予它一些约束,则它可能无法采用当前预览的iPhone的屏幕宽度,因此会抱怨“运行时大小不同”。

对我来说,我使用iPhone 11预览在大小检查器中将UIView和ImageView的宽度和高度设置为固定值。并在IB中给定10点领先和落后约束。然后它抱怨我是否切换到iPhone 12预览。

要修复此问题,我选择viewController并选择“更新框架”。然后看起来更好,但是Xcode在更改后仍然抱怨一个冲突约束。最终,我在IB中手动找到并修复它。