以编程方式使用自动布局的 3 个等高视图
Posted
技术标签:
【中文标题】以编程方式使用自动布局的 3 个等高视图【英文标题】:3 equal height views using autolayout programmatically 【发布时间】:2016-12-09 03:15:52 【问题描述】:我是自动布局的初学者。我以编程方式创建了所有视图。
我想要的是以编程方式使用自动布局进行 3 个等高垂直分割?
我的期望是纵向或横向,所有 3 个视图的高度都会调整,宽度将保持不变(屏幕宽度)
你能举个例子吗?
【问题讨论】:
在询问示例之前,您必须上传您尝试的快照代码。你需要什么输出只需上传一个用户界面 【参考方案1】:您是否尝试过使用 UIStackView?
lazy var stackView: UIStackView =
let stackView: UIStackView = UIStackView(arrangedSubviews: [self.firstView, self.secondView, self.thirdView])
stackView.axis = UILayoutConstraintAxis.vertical
stackView.distribution = UIStackViewDistribution.fillEqually
stackView.alignment = UIStackViewAlignment.fill
stackView.spacing = 10.0
return stackView
()
然后使用自动布局使高度为视图的高度之一。 stackView 将处理其他两个视图的高度
【讨论】:
您可能需要在切换方向时更新约束 但我认为这就是自动布局的重点..当方向改变时我不需要做任何事情 这取决于约束使用什么作为值。例如,如果它是恒定的 100 高度,则不需要。但是如果你使用了 superview 的 30% 的高度,那么你将不得不做更多的工作来让它正确渲染,就像在屏幕的高度和宽度之间取最大值一样 @hooliooo 您可能需要添加这一行 stackView.translatesAutoresizingMaskIntoConstraints = false【参考方案2】:通过从对象库中拖动“垂直堆栈视图”UIStackView
来使用垂直堆栈视图。设置它的自动布局约束并将其划分为您需要的数量。您无需通过代码对其进行管理。
【讨论】:
我的所有视图都已经创建并使用 autoresizingmask。现在转IB会比较难 您也可以在代码中创建堆栈视图,但工作量更大。以上是关于以编程方式使用自动布局的 3 个等高视图的主要内容,如果未能解决你的问题,请参考以下文章