如果由Interface Builder for Xcode 4.5和iPhone 5构建,如何使视图中的控件不重叠?

Jer*_*y L 5 xcode interface-builder ios iphone-5

我正在使用Xcode 4.5和iPhone 4和5模拟器,Interface Builder会在屏幕的上半部分添加一个UIButton,并带有一个顶部约束,并在屏幕的下半部分添加一个带有底部约束的UIButton.

它在iPhone 5模拟器上工作正常,但在iPhone 4模拟器上,按钮可以重叠,或者底部按钮甚至可以位于顶部按钮上方.

我认为这是由于约束,例如底部按钮"必须距离底部边缘250点".我无法删除约束,如果我将其更改为"250点或更少",它将无效,如果我将其更改为"250点或更多",它也将无效.

有办法:

1)使它没有约束,但只是位于绝对x和y?(或者过去的春天怎么样,所以iPhone 5中的所有内容都更加分散?)

2)使NIB成为仅适用于iPhone 4和4S的一款,这样该应用程序在iPhone 4和4S上运行良好,在iPhone 5上只是"黑色禁止".

3)在iPhone 5上运行良好,在iPhone 4上运行良好吗?

如果您只知道上述(1),(2)或(3)的解决方案,请随意给出,因为它仍然是过渡期的可行解决方案.

它实际上很容易重现:使用Xcode 4.5创建一个简单的单视图应用程序,并在屏幕中心点上方拖动一个按钮,在屏幕中心点下方拖动另一个按钮.然后在模拟器上运行它.在iPhone 5上,它是:

在此输入图像描述

现在停止应用程序,并将模拟器中的设备更改为iPhone 4S(3.5英寸Retina).如果您没有先停止应用程序,模拟器可能会崩溃.现在再次运行应用程序,按钮将重叠:

在此输入图像描述

Jay*_*ase 6

我有同样的问题,这是由于自动调整的设置错误.要更改自动调整大小,请单击界面构建器中的控件,转到大小检查器.

注意在自动调整网格中的粗体红色,它们在屏幕调整大小时控制位置(例如从iPhone 3GS到iPhone 5时).

从左下角自动调整大小

我认为如果你使自动调整看起来像这样最适合你:

从左上角自动调整大小


tc.*_*tc. 0

  1. 我不确定,因为我还没有使用过基于约束的布局(直到我们放弃对 iOS 5 的支持才会使用)。传统的基于 NIB 的自动调整大小将执行绝对坐标。
  2. 据我所知,您不能仅在一个屏幕上执行此操作 - 您可以通过删除Default-568h@2x.png.
  3. 我会选择程序化布局,或者如果您想要简单的方法(维护起来很痛苦),则针对不同的屏幕尺寸使用不同的笔尖。请注意,您还需要正确处理通话状态栏......

编辑:将两个按钮放在容器视图中并使约束将容器置于其父级内部?它不会调整按钮之间的间距,但在两种设备上看起来都应该不错。