使垂直空间约束常数等于屏幕高度的百分比

时间:2016-08-10 17:51:41

标签: ios autolayout nslayoutconstraint ios-autolayout

我希望我的两个子视图之间的Vertical Spacing Constraint Constant值是屏幕高度的百分比。这样设计在所有设备上看起来都是一样的。

我如何在故事板中这样做?任何众所周知的技巧?

enter image description here

也许有一些技巧可以通过内容拥抱优先级,压缩阻力或优先级较低的第二个约束来实现这一目标?

4 个答案:

答案 0 :(得分:2)

我想到的解决方案是在我的两个子视图之间引入第三个子视图 - 并使用superview在第三个子视图上设置一个方面高度约束。这两个子视图将具有空间约束,第三个子视图的常量为零。

但是 - 我不喜欢让故事板上的make-belief隐形子视图混乱。

答案 1 :(得分:1)

创建垂直空间约束的IBOutlet。然后使用屏幕大小检查设备是什么,然后为约束的常量赋值。 EX:

if(screenSize.height == 480)
{
  self.verticalspaceConstraints.constant = 100 ;//this is an example
}

//like this add your other conditions

我已经创建了一个小视频教程来获得基本想法尝试这个 small video tutorial

希望这会对你有所帮助。

答案 2 :(得分:0)

我有两个解决方案,但我正在使用第一个解决方案。

1)在两个元素之间放置一个具有所需间隙高度的UIView,并将间隙视图作为与控制器主视图成比例的高度。这样它会根据设备增加,但这个想法可能会感觉很复杂。因为要设计一个复杂的屏幕,你必须放置很多间隙视图,这将是混乱的。

2)通过将一些字符分配给约束的标识符属性,将设计时的约束标记为动态。创建NSLayoutConstraint的类别类,并在类中继承其函数并检查标识符是否以该字符开始,并修改该值,如乘以设备缩放。

答案 3 :(得分:0)

要在两个视图之间具有合适的垂直间距,可以:

  • 使用UIStackview并动态定义间距
  • 在两者之间使用“垂直间距约束”,并将优先级更改为250。您需要在第一个约束上具有顶部约束,在第二个约束上具有底部约束。 Change prority value
  • 在每个子视图和超级视图之间使用等高关系。您将“比例高度”分别设置为0.4,这样您可以在两者之间留出20%的余量。为此,请在子视图上按CTRL + clic,然后在父视图上画线。

Create height constraint relation

然后调整“乘数”,以确保第一个元素是子视图。

Change multiplier value