2016-02-22 81 views
-1

我想根据视图高度以编程方式设置我的约束。例如,我想从视图设置我的约束顶部等于(self.view.height)* 0.05。然而,据我了解它是不可能的,如果你尝试这样做,应用程序将引发异常。处理iPad视图的自动布局

我用砖石(库帮助编程易于设置的限制),而且我发现答案:

you cannot relate size attributes (height, width) to position attributes (left, top etc) 

If you wanted 20% margin on both top and bottom you could create a constraint which is 

make.height.equalTo(superview.mas_height).multipliedBy(60/100.0); 
make.center.equalTo(superview.mas_center); 

任何方式来实现这一点?谢谢。

编辑:

例如,该代码将引发异常:从典型的以编程方式添加约束语法

[imageNewsLabel mas_makeConstraints:^(MASConstraintMaker *make) { 

     make.bottom.equalTo(self.view.mas_height)multiplyBy(0.2); 

它的不同,但我希望戒烟理解明显。 That will raise an exception: invalid pairing of layout attributes.

+0

@matt my bad。我更新了问题主体。 –

+0

@matt您是否会善意地删除downvote,因为我更新了问题主体以符合您的标准。 –

回答

1

您需要添加一个间隔视图,该视图将位于视图和其父视图边缘之间。如果您想要保持与iOS 8及以下版本的兼容性,请使用常规视图(空白,透明),并使用您选择的倍数约束其高度。如果您只瞄准iOS 9或更高版本,则可以使用UILayoutGuide,它可以做同样的事情,但不需要UIView的费用。

+0

你的意思是我可以使用相同的片段:make.bottom.equalTo(self.view.mas_height)multiplyBy(0.2);新的隐形视图? –

+0

不知道'MASConstraintMaker'的确切语法,但是你添加了一个不可见视图,你的视图的约束底部=这个不可见视图的顶部,一个约束底部的不可见视图=父视图的底部,约束高度不可见视图= 0.2 *视图的高度(或者您实际想要设置的任何约束)。 – jcaron

+0

感谢您的解释。然而,这是一个额外的工作,我想知道为什么我不能简单地设置约束值简单地通过它乘以self.view.height的结果multiply .. –