ChatGPT解决这个技术问题 Extra ChatGPT

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 时都会再次出现此警告。此外,如果我单击黄色三角形,然后单击更新帧,则不会发生任何事情。

https://i.stack.imgur.com/6oRfI.png

这里确认了同样的问题。建议的解决方案都不能解决问题。
@GregP 请检查我的解决方案并回复
@Ashish Kakkad 请检查我的解决方案并回复
归档 rdar://28844288。随意欺骗openradar.me/radar?id=4985464104681472
这是我在更新项目后困扰我的最后一个警告。

c
croxy

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

https://i.stack.imgur.com/tj9Nu.png


这不能解决问题。关闭 Xcode 并再次打开,问题会再次出现。
这让我很烦。我刚试过这个,这确实暂时消除了警告。您始终可以来回切换模拟大小以在警告再次出现时将其删除。极好的。恼人的。
只是临时修复 - 这不是答案。
更改此模拟大小(并返回到“推断”或其他)或“打开/关闭调整滚动视图插图”。两者都将导致 Storyboard 删除其 misplaced="YES"。这是一个 Xcode 错误,此修复是一种强制刷新。 取自@buildsucceeded 答案。
@MobileBloke强制刷新我的意思是它会导致情节提要视图重写(刷新)参数,重新评估并删除警告。这真的是一次刷新,强制只是意味着它不会自动执行它(因为它应该)并且需要一些手动的任意更改。
C
Community

如前所述 here,您可以通过打开/关闭调整滚动视图插图来解决此问题。


哇,并且(检查 git)实际上,当你这样做时发生的所有事情就是 misplaced="YES" 被删除。 :/
这会修复它,直到您下次关闭并重新打开项目。不是一个完整的修复。
n
negersiu

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


这工作了很短的时间 - 然后在 Xcode 再次处理它之后 - 发生了同样的事情并且再次出现警告。这仍然适用于最新的 Xcode 吗?
g
guoc

这在 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


知道为什么这会起作用而不是“更新帧”按钮吗?
@guoc,兄弟你能帮我吗stackoverflow.com/questions/46375778/…
J
Jensie

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

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

一个黑客,但零警告而不是 1 是很好的 :)


我以后需要添加这个吗?只要我没有警告,我真的不在乎我的导航控制器是什么样子。这有点好笑。故事板会在瞬间识别警告,然后当您以这种方式进入故事板时它会消失。
我做了同样的事情,然后不再碰故事板。一切正常。
问题是,当您重新加载它时,它又回来了......其他人注意到在发生此错误时加载情节提要需要很长时间才能运行微调器?
i
innesngunn

单击情节提要左下方的“查看为”并选择不同的设备尺寸,然后再次单击它并切换回您开始使用的设备尺寸。这对我有用。


它也只是临时为我修复它
n
nekonari

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


我正在使用 SE .. 但仍然警告
是的,我知道。但是,只要您将该选择切换到其他内容,它们就会消失。现在,我从 7 开始,切换到 SE,然后回到 7 以清除这些警告。或者只是留下它们,而不是在提交更改时检查 misplaced 属性。
U
UKDataGeek

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

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


t
templeman15

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


您只需要在没有父母的视图控制器上设置它(根视图控制器+可能更多,取决于您在故事板中的内容)
J
James Webster

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

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

https://i.stack.imgur.com/xtS0z.png

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

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

https://i.stack.imgur.com/OJyvB.png

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


在这种情况下不起作用。导航栏的 X/Y/宽度/高度字段全部变灰/不可编辑。
@Ian 嗯……我想我刚刚编辑了 xib,以便数字匹配。
R
Radu Ursache

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

我必须在“底栏”选项中选择“无”:

https://i.stack.imgur.com/S87Qq.png


G
GregP

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

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


重新打开 XCode 后,此警告实际上消失了,但如果我打开项目中的任何文件并再次打开 main.storyboard,这些警告会再次出现
A
Ash

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

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


C
ChuckZHB

Xcode 12

我认为这个问题主要是因为不同设备的设备预览宽度不同。例如 iPhone 12 和 iPhone 11 有不同的屏幕宽度。如果你在某个视图的宽度上设置了一个固定值并给它一些约束,那么它可能不会采用你当前预览的 iPhone 的屏幕宽度,所以它会抱怨“运行时大小不同”。

对我来说,我在 iPhone 11 预览中将 UIView 和 ImageView 的宽度和高度设置为大小检查器中的固定值。并给它在 IB 中固定 10 个点的前导和尾随约束。然后它抱怨如果我切换到 iPhone 12 预览版。

为了解决这个问题,我选择了 viewController 并选择了“Update Frames”。然后它看起来更好,但 Xcode 在更改后仍然抱怨一个冲突约束。最终,我在 IB 中手动找到并修复了它。