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:在自动布局下更改 UITableView 高度

如何在ios swift中以编程方式创建自动布局等宽度约束?

y 位置、高度需要约束 - 自动布局故事板

动态单元高度自动布局 IOS

没有自动布局的 IOS11 的 Tableview 高度调整

iOS 视图高度和自动布局