【问题标题】:iOS view height and auto layoutiOS 视图高度和自动布局
【发布时间】:2014-09-09 10:52:30
【问题描述】:

我有一个viewController,它是为iPhone5 屏幕尺寸配置的。红色矩形是视图。

为了让这个视图在 iPhone4 中正确显示 - 我使用了自动布局。但是,当我指定诸如前缘、后缘、底部空间和顶部空间之类的约束时(在顶部空间中,我什至将约束的优先级设置为 LOW ) - 视图仍然部分地在屏幕下方,就好像我的约束不起作用一样。 但是,如果我指定视图的高度并删除顶部空间约束而不是顶部空间约束 - 一切正常。

有人能解释一下吗?谢谢。

【问题讨论】:

  • 如果有冲突,自动布局使用优先级更高的约束。
  • 我知道,这就是我将顶部空间指定为低优先级的原因 - 在我删除此约束并指定视图的高度约束之前,它仍然无法正常工作。为什么会有帮助?
  • 在你的自定义视图中应该如何布局控件?它们还应该有约束,指定您的自定义视图高度。
  • 我的视图中的控件根本没有约束,因为我只有纵向。
  • 也许通过删除您刚刚允许故事板(或 xib)将 autosizingmask 转换为您的约束的顶部约束?

标签: ios objective-c xcode


【解决方案1】:

那是因为当您设置顶部空间约束时,它将按照您提供的常量移动视图。 iPhone 4 和 iPhone 5 的屏幕高度不同,但常数保持不变,因此显然它的行为会有所不同。对界面进行故障排除的一种方法是在情节提要上的情节提要设备上的 iPhone4 和 iPhone 5 之间切换(界面构建器右下角从左到右的第一个按钮)。

在我看来,自动布局完全取决于经验。在我学会之前,我一直在努力。如果您希望您的视图附加到屏幕底部,您应该将 BOTTOM SPACE 设置为 0 并像您一样指定视图的高度,或者调整其子视图的约束,以便根据内部视图动态设置高度。

【讨论】:

  • 是的,我同意有很多“试试看会发生什么”。