26

自动布局,尽管它很好,但让我对约束发疯。我在 IB 中设计了纵向模式,但无法获得所需的横向模式。

布局

请注意,当方向更改为横向时,UIImageView 块之间的间距会减小,并且SAMPLE TEXT更改的文本对齐方式为右对齐。

目前,我为它添加了一些限制条件。但是,我需要保持 UIImageView 块之间的空间是固定的,因此它在纵向上看起来很拥挤,而在横向上看起来很好。我需要它在纵向上均匀分布并在横向上压缩(如上图所示)。同样,目前我的约束会显示文本,但不会将其保持在屏幕中心并右对齐。

自动布局有可能吗?如果是这样,怎么做?非常感谢帮助。

4

3 回答 3

12

有几种方法可以解决这个问题。一种方法是将您的 3 个图像视图包含在 UIView 中。将顶部和底部的图像视图约束分别赋予顶部和底部,并赋予中间的一个 centerY 约束。给这个封闭视图一个固定的高度和宽度,以及对控制器视图顶部的约束。为此封闭视图的高度约束创建一个 IBOutlet,并在旋转时更改它。在下面的示例中,我给它的纵向高度为 350:

-(void)updateViewConstraints {
    [super updateViewConstraints];
    if (self.view.bounds.size.height < self.view.bounds.size.width) {
        self.heightCon.constant = self.view.bounds.size.height;
    }else{
        self.heightCon.constant = 350;
    }
}

至于标签,最简单的方法是删除您拥有的约束(底部和中心X),并在旋转时添加尾随和中心Y。

于 2013-08-13T17:02:15.647 回答
6

是的,它可以通过自动布局来完成。如果您希望视图之间的间距根据方向增加和/或减少,您可以使用小于或等于或大于或等于关系(而不是等于)作为约束,这允许距离增加或缩小:

在此处输入图像描述

玩弄它,你应该能够得到你想要的。

于 2013-08-13T16:26:06.427 回答
2

Yes, it is definitely possible to do this with Auto Layout. Through a series of steps, that I think might be too long to post as an answer, you can retain the spacing between your ImageViews and keep the alignment of the text the same.

Essentially, you will have to pin a corner of each ImageView and remove some constraints so that it doesn't automatically compress the spacing when you change the orientation.

Full explanation on how to do this (pretty much exactly what you are asking for) is explained in this tuorial. You can find it about halfway through the page.

Hope this is what you were looking for.

于 2013-08-13T16:15:57.260 回答