【问题标题】:3 equal height views using autolayout programmatically以编程方式使用自动布局的 3 个等高视图
【发布时间】:2016-12-09 03:15:52
【问题描述】:

我是自动布局的初学者。我以编程方式创建了所有视图。

我想要的是以编程方式使用自动布局进行 3 个等高垂直分割?

我的期望是纵向或横向,所有 3 个视图的高度都会调整,宽度将保持不变(屏幕宽度)

你能举个例子吗?

【问题讨论】:

  • 在询问示例之前,您必须上传您尝试的快照代码。你需要什么输出只需上传一个用户界面

标签: ios autolayout


【解决方案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会比较难
  • 您也可以在代码中创建堆栈视图,但工作量更大。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多