在纵向和横向中使用自动布局

自动布局,就像它一样好,让我疯狂的约束。 我有在IBdevise的肖像模式,但我不能得到所需的横向方向工作。

布局

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

目前,我已经添加了一些限制,它的工作。 但是,我需要保持固定的UIImageView块之间的空间,因此,它看起来狭窄的肖像和罚款的风景。 我需要将它纵向均匀地展开,并在横向上进行压缩(如上图所示)。 同样,目前我的限制提出的文字,但它不会保持在屏幕的中心和右alignment。

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

有几种方法可以解决这个问题。 一种方法是把你的3个图像视图放在一个UIView中。 给顶部和底部的图像视图的约束分别为顶部和底部,给中间一个中心的约束。 给这个封闭视图一个固定的高度和宽度,以及对控制器视图顶部的约束。 创build一个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; } } 

至于标签,最简单的方法是删除你的约束(底部和centerX),并添加尾随和centerY旋转。

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

在这里输入图像说明

玩这个,你应该能够得到你想要的。

是的,使用自动布局完全可以做到这一点。 通过一系列的步骤,我认为可能太长,以发布答案,您可以保留您的ImageViews之间的间距,并保持文本的alignment。

从本质上讲,您将不得不钉住每个ImageView的angular落,并删除一些约束,以便它不会自动压缩间距时更改方向。

关于如何做到这一点的完整解释(几乎完全是你所要求的) 在这个文件中解释 。 你可以在页面的中途find它。

希望这是你正在寻找的。