使用导航控制器将视图复制到项目 - “图像视图”的框架在运行时将有所不同

时间:2014-01-27 13:29:31

标签: ios xcode interface-builder xcode5

对于经验丰富的Xcode 5界面构建器用户来说可能是一个简单的问题,但很难在Google上找到答案:

我有an app for iPhone,它不使用导航控制器(这里是fullscreen):

xcode screenshot

右侧的视图场景有一个图像视图,下面有5个标签 - 显示用户详细信息:

app screenshot

然后我创建了another iPhone app并将“详细信息”视图复制到它(此处fullscreen):

xcode screenshot

现在Xcode 5.0.2显示了一条警告:

  

“图像视图”的框架在运行时会有所不同。

是因为视图顶部的某些空间会被导航栏占用吗?

请问如何解决?

我尝试点击 [ - o - ] 图标,但不是解决了我的布局问题,而是整个布局搞乱了(标签跳到了左边)。

此外,我已尝试在Xcode属性检查器的右侧设置复选框,但无法在那里找到任何良好的组合(我不确定“推断”在Xcode上下文中的含义)。

更新

奥西尔的建议对我有用,谢谢。

我发布了一个新屏幕截图(此处为fullscreen),以防有人提出更多改进建议:

xcode screenshot

4 个答案:

答案 0 :(得分:22)

我发现取消选中相关导航控制器的Adjust Scroll View Insets复选框可清除警告

Adjust Scroll View Insets

答案 1 :(得分:3)

选择UIImageView并点击 [ - o - ] 图标,然后选择重置为建议的约束菜单项。 模拟指标部分在运行时没有任何作用,只有我们在编译之前才能弄清楚布局的样子。

还有一种(更好的)方法,但你必须分析UIImageView有哪些约束,并相应地为新布局更改它们(添加了导航栏)。您可以尝试在此处发布带有这些约束的屏幕截图,以便我们帮助您了解发生的情况。转到右侧面板中的尺寸检查器,并向我们显示约束部分。

<强>更新

您的约束强制UIImageView与下面的标签具有相同的水平对齐并且具有相同的宽度。此外,您对最上面的标签和导航栏中的固定垂直空间有限制,UIImageView的宽度取决于导航栏和标签之间的可用空间。我认为这是当前布局(没有滚动)的好方法,因为一切都适合3.5英寸和4英寸显示器的屏幕。如果您想要不同的行为,请在评论中告诉我。

答案 2 :(得分:2)

在Xcode版本8.0 Swift 3.0中遇到同样的警告。检查并取消选中“调整滚动视图插入”选项后,警告消失了。注意:它们在开头没有像上面的评论那样被检查,所以它可能会澄清那些有同样警告的人。

选中/取消选中“调整滚动视图插入”选项。

enter image description here

答案 3 :(得分:1)

看起来您在3.5英寸屏幕上运行应用程序,而在界面构建器中为4英寸屏幕设计它时。 您应该设置所有缺少的约束,以便autolayout'知道'如何布置图像视图和标签。

我会为标签设置固定高度,为图像视图设置可变高度。然后将图像视图的内容模式设置为“纵横填充”(请注意,在这种情况下,您将丢失图像的一部分,而不是在左侧和右侧有灰色条纹)。