iOS自动布局多个高度
Posted
技术标签:
【中文标题】iOS自动布局多个高度【英文标题】:iOS autolayout multiple height 【发布时间】:2015-03-26 18:25:23 【问题描述】:我想在不同的屏幕上看到可变的高度。 比方说,我想要 3.5 英寸屏幕中视图的高度为 80 像素。
100px 4.0 英寸屏幕
120px 4.5 英寸屏幕
和 4.7 英寸屏幕中的 140。
使用自动布局实现它的最佳方法是什么?
【问题讨论】:
【参考方案1】:将视图与 AutoLayout 对齐,例如与超级视图的顶部和侧面对齐,但设置一个固定的高度约束,如下所示:
然后为高度约束创建一个出口。 在您的班级中,您现在可以通过以下方式更改高度:
self.myHeightConstraint.constant = 120;
编辑:你必须取消选中“宽度”复选标记,我创建屏幕截图时没有注意到它被选中...
【讨论】:
【参考方案2】:如果您不需要这么高的准确性,我认为最好的方法是使用关系乘数。如果屏幕变大,您的视图将变大。
您可以通过代码或Interface Builder 完成此操作
- (void) viewWillAppear:(BOOL)animated
NSLayoutConstraint *constraint = [NSLayoutConstraint constraintWithItem:upperview
attribute:NSLayoutAttributeHeight
relatedBy:0
toItem:self.view
attribute:NSLayoutAttributeHeight
multiplier:.5
constant:0];
[self.view addConstraint:constraint];
【讨论】:
【参考方案3】:在视图的高度约束上创建一个IBOutlet
。之后,您将能够在代码中设置约束常量(在检查屏幕高度之后)。当然,您还必须设置其他约束,但请记住,您的视图高度会发生变化(或在考虑可能发生冲突的情况下提交约束)
ex(快速):
let height = self.view.frame.size.height
if height == 568 //iPhone 5 size
self.viewHeight_Constraint.constant = 120.0
self.myView.layoutIfNeeded();
我在layoutIfNeeded
上取得了成功,但请查看here 的答案以获取理由。
【讨论】:
以上是关于iOS自动布局多个高度的主要内容,如果未能解决你的问题,请参考以下文章
如何在ios swift中以编程方式创建自动布局等宽度约束?