iOS Autolayout对象组在两个对象之间的中间

时间:2014-02-26 21:03:56

标签: ios autolayout

我遇到了一些与Autolayout有关的问题,并尝试让我的应用程序的布局在两种屏幕尺寸上看起来都不错。这是它在4英寸上的外观: 4-inch

但是,这是它在3.5英寸上的外观: 3.5-inch

我希望UIImageView保持固定在顶部,并且Watch / Listen按钮保持在一起固定在底部(具有相同的间距)。

并且,我希望标题/扬声器/日期标签位于UIImageView和按钮之间。

关于如何使用Autolayout进行此操作的想法?或者我是否需要对布局编码进行一些研究?

3 个答案:

答案 0 :(得分:1)

在Interface Builder中完全设置它的最简单方法是使用不可见的间隔视图,原因我在这里解释:https://stackoverflow.com/a/20865342/341994

答案 1 :(得分:0)

我看到两种可能性:

  1. (优先考虑)按照“{3}}
  2. 中的”在视图之间创建相等间距“部分
  3. 将间距约束连接到您的代码,并根据IS_IPHONE_5手动更改。
  4. 将此内容添加到您的pch文件中:

    '#define IS_IPHONE_5 (fabs((double) [[UIScreen mainScreen ] bounds].size.height - (double) 568) < DBL_EPSILON)`
    

    并在代码中:

    self.spacing.constant = IS_IPHONE_5 ? value1 : value2;
    [self.view setNeedsLayout];
    

答案 2 :(得分:0)

我对这个问题有点迟了,但我认为使用包含视图要简单得多。创建一个视图,该视图约束到UIImageView的底部和UIButton的顶部(以及屏幕的左右边缘)。然后将UILabel放在该视图中。

您可以将中间标签水平和垂直居中,然后将其他标签限制在其中, OR 您可以创建另一个没有设置高度或宽度的子视图,但是将其固定在其中的标签上以获得其高度和宽度。然后,您可以在第一个包含视图中水平和垂直居中显示该视图。