在Xcode SWIFT中,如何将UIViews按比例放置在屏幕尺寸上?

时间:2015-01-20 16:04:51

标签: storyboard autolayout

我想使用storyboard的自动调整大小,位置,对齐等来执行以下操作。我想制作一个看起来像照片的窗户。

enter image description here

如图所示,一切都保持居中,平方和对齐。

随着屏幕变小,我希望视图本身之间的空间以及视图和显示器边缘之间的边缘缩回。基本上,视图保持相同的大小,但它们周围和它们之间的空白空间更少。随着屏幕越来越小,他们只是挤进去。反之亦然,随着屏幕变大。

奖励:可能如果观点过于接近并且几乎相互接触,那么观点本身就会开始收缩,以免彼此接触。

据我所知,所有钉扎都是固定的。似乎不是"请保留1/12的屏幕尺寸边距","请在这两个按钮之间有1/6的屏幕尺寸"。

过去我以编程方式完成了这项工作,但我们的想法是使用Xcode功能来提高工作效率。这正是我在伪代码中想要的:

沿水平轴:

如果(屏幕宽度> 406)

左文字段宽度为200

右侧文字字段宽度为200

左边距是(屏幕宽度 - 400)/ 3

文本字段之间的空格为(屏幕宽度 - 400)/ 3

右边距是(屏幕宽度 - 400)/ 3

否则

左文字段宽度为(屏幕宽度 - 6)/ 2

右文字段宽度为(屏幕宽度 - 6)/ 2

左边距= 2

文本字段之间的空格= 2

右边距= 2

结束如果

2 个答案:

答案 0 :(得分:0)

您需要实现的目标就是了解NSLayoutConstrains的工作原理,并在不编写单行代码的情况下使用storyboard将它们放在视图上。例如,让我们采用文本框1并进一步检查这种情况。

首先从截图和你的描述我看到这个盒子有首选左边距,首选宽度和恒定高度。因此,您要添加的第一个约束是:使用您选择的常量值,恒定首选宽度和恒定高度将超前视图引导至超视图。由于第一和第二约束仅是首选,因此它们的优先级应小于要求(1000),例如750.

接下来,你需要定义左边距的缩小规则,这是通过向superview添加另一个前导空间约束来完成的,但这次是以最小边距大小的常量,关系大于或等于当然需要优先级。

最后你应该告诉你的盒子永远不要超过superview的X中心,为Superview添加尾随空间。中心X约束两个盒子/ 2之间的最小空间常数,关系大于等于和所需的优先级

对于方框1,方框2应该具有与方框1相同的约束但是具有相反的前导和尾随约束,等等......

答案 1 :(得分:-1)

您应该使用autolayout并为每个视图设置一些约束。 这段视频清楚地说明了一点:
https://www.youtube.com/watch?v=G53PuA_TlXk&list=PL03RXnsvCFstArb6HZo9BhFKs9B3wKZer&index=9