我需要创建一个有3个标签的视图,左、中、右。并将这个视图以编程方式放置在我的StoryBoard内的UIView内。每次添加这个视图时,标签都会被重复使用。
我正在使用storyboard进行我的应用设计,但需要以编程的方式来完成,因为我可能要使用这个视图1到10次,在每个页面上垂直堆叠,有10个页面。因此,要创建100个视图,有300个级别,并与隐藏显示它们的工作将需要永远。
最好的方法是什么?我想过使用tableView,但在创建一个只有1到10个单元格的小表格时遇到了问题,而且不需要滚动,并将其包含在该视图中。
看起来堆栈视图可以满足你管理标签的需求。用@IBDesignable创建一个StackWithLabels类型,以便能够以编程方式或从Storyboard添加堆栈视图。
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let stackWithLabels = StackWithLabels(frame: .init(origin: .zero, size: UIScreen.main.bounds.size))
stackWithLabels.distribution = .fillEqually
view.addSubview(stackWithLabels)
}
}
@IBDesignable
class StackWithLabels: UIStackView {
override init(frame: CGRect) {
super.init(frame: frame)
commonInit()
}
required init(coder: NSCoder) {
super.init(coder: coder)
commonInit()
}
private func commonInit() {
let label1 = UILabel(); label1.text = "Label 1"
let label2 = UILabel(); label2.text = "Label 2"
let label3 = UILabel(); label3.text = "Label 3"
addArrangedSubview(label1)
addArrangedSubview(label2)
addArrangedSubview(label3)
arrangedSubviews.forEach { ($0 as? UILabel)?.textAlignment = .center }
}
}