Frame "will be different at run time".. 这不是重点吗?

Frame "will be different at run time".... Isn't that the whole point?

也许争取 "warning free" 项目是徒劳的,但我对 Adaptive Layout/AutoLayout 非常紧张,我不得不尝试消除这些警告。

我有一个 uiview,我想根据纵向屏幕宽度动态调整其大小。我在 Build Info 中将我的应用程序设置为 Universal、Portrait only(和上下颠倒)。我通过以下方式限制了 uiview:

  1. 将视图的中心与 Superview 的中心 X 对齐[=29​​=]
  2. 使视图的宽度与超级视图的宽度成比例
  3. 为视图提供 1:1
  4. 的纵横比约束
  5. 给定视图对父视图顶部的垂直约束

详情请看下方截图

所以现在我收到了关于视图 "frame being different at run time" 的警告,特别是运行时的大小和位置与 canvas 中的内容。不确定为什么 Xcode "cares" 关于 canvas 的 class 大小设置为任意高度和任意宽度。我认为自适应布局的重点在于尺寸和位置在运行时根据设备屏幕尺寸和方向确定。

如果我崩溃并让 Xcode "Update frames"... 是的,警告消失了,但由于超大视图,几乎不可能在微小的 canvas 中以图形方式工作以所见即所得的方式。这里有任何解决方案可以消除警告而不创建超大视图,这使得在 canvas 内部工作几乎不可能吗?

您可以将模拟指标尺寸更改为 4 英寸 iPhone!

或自由格式,然后将大小更改为最适合您的大小。

要消除警告,让约束放置视图 "correctly",只需 select 发出警告的视图,按右下角的小三角形故事板:

然后 select "Update frames" "All Views in Container"

(我希望有某种方法可以对整个故事板执行此操作。至少我还没有找到)

Select 查看并按

  • 选项 + 命令 + =

这将更新帧大小。重复所有有问题的观点。不需要那么长时间,特别是如果您通过单击错误消息找到它们。

感谢 this answer 的想法。


注释

更新到 Xcode 8 并选择某些视图作为设备后,我收到此错误。菜单与 Xcode 7 中的不同,因此@Spoek 的回答不再有效。此外,单击“更新”或“重置”对我不起作用。

更新

更新帧现在有自己的按钮。所以我之前就错过了。

我在静态表格视图单元格上收到此错误。我取消选中自动选项,警告消失了