自动布局,尽管它很好,但它的约束让我抓狂。我有在IB设计的肖像模式,但我无法获得所需的横向工作。

请注意,当方向更改为横向时,UIImageView块之间的间距减小,并且SAMPLE TEXT的文本对齐方式更改为右对齐。
目前,我已经为它的工作添加了一些约束。然而,我需要保持UIImageView块之间的空间固定,因此它在纵向看起来很狭窄,在横向看起来很好。我需要它是均匀分布在肖像和压缩在风景(如上图)。类似地,目前我的约束条件是调出文本,但它不会将文本保持在屏幕的中心和右对齐。
使用Auto Layout可以做到这一点吗?如果是这样的话,是怎么做的?非常感谢您的帮助。
发布于 2013-08-14 01:02:16
有几种方法可以解决这个问题。一种方法是将您的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;
}
}至于标签,最简单的方法是删除已有的约束(bottom和centerX),并在旋转时添加trailing和centerY。
发布于 2013-08-14 00:26:06
是的,这可以通过自动布局来完成。如果要根据方向增大和/或减小视图之间的间距,可以对约束使用小于或等于或大于或等于关系(而不是相等),这允许增大或缩小距离:

尝试一下,你应该能够得到你想要的东西。
发布于 2013-08-14 00:15:57
是的,使用自动布局绝对可以做到这一点。通过一系列的步骤,我认为作为答案可能太长了,你可以保持ImageViews之间的间距,并保持文本的对齐方式不变。
基本上,你必须固定每个ImageView的一角,并移除一些约束,这样当你改变方向时,它不会自动压缩间距。
关于如何做到这一点的完整解释(几乎就是你所要求的) is explained in this tuorial。你可以在页面的中途找到它。
希望这就是你要找的。
https://stackoverflow.com/questions/18213376
复制相似问题