【发布时间】:2020-07-09 14:09:08
【问题描述】:
我刚刚学习了UIStackView,并试图掌握自己将自动布局单独应用于每个 UI 元素与使用堆栈视图之间的区别。
假设您有 5 个UILabels,并且您希望将它们平均间隔开。我可以使用自动布局锚之类的东西:
var previous: UILabel?
for label in [label1, label2, label3, label4, label5] {
label.heightAnchor.constraint(equalToConstant: 88).isActive = true
if let previous = previous {
label.topAnchor.constraint(equalTo: previous.bottomAnchor, constant: 10).isActive = true
} else {
label.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor, constant: 0).isActive = true
}
previous = label
}
或视觉格式语言:
let viewsDictionary = ["label1": label1, "label2": label2, "label3": label3, "label4": label4, "label5": label5]
view.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|[label1(labelHeight@999)]-[label2(label1)]-[label3(label1)]-[label4(label1)]-[label5(label1)]-(>=10)-|", options:[], metrics: metrics, views: viewsDictionary))
或使用堆栈视图并将分布设置设置为沿主轴的equalSpacing。
这些是粗略的示例,但我是否正确理解您几乎可以使用自动布局锚或使用视觉格式语言完成堆栈视图所做的所有事情,但堆栈视图使其更容易?
或者使用自动布局锚或视觉格式语言无法实现的堆栈视图是否有独特的好处?
【问题讨论】:
标签: ios swift autolayout uistackview