【发布时间】:2017-10-29 01:01:06
【问题描述】:
我正在尝试使用嵌套的视图堆栈视图创建堆栈视图以创建网格。网格中的每个单元格都应该有一个标签。我遇到的问题是标签仅在第一个视图中显示,如this screenshot:
我的主堆栈视图的代码很简单:
for _ in 1...5 {
let view = WeekView()
addArrangedSubview(view)
}
这是嵌套堆栈视图的代码。
// Function called in init(frame:)
func configureView() {
spacing = 8
for _ in 1...7 {
let view = UIView()
let label = UILabel()
view.addSubview(label)
addArrangedSubview(view)
label.text = "hi"
label.textAlignment = .center
view.widthAnchor.constraint(equalToConstant: 40).isActive = true
view.translatesAutoresizingMaskIntoConstraints = false
label.heightAnchor.constraint(equalTo: view.heightAnchor).isActive = true
label.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true
label.translatesAutoresizingMaskIntoConstraints = false
}
}
任何建议都会非常受欢迎。
【问题讨论】:
-
您没有设置标签的位置,只设置了它的宽度和高度。
-
感谢您的建议,但我认为如果您移动一个视图,它的所有子视图也会随之移动,不是吗?但我试图打电话给
label.frame.origin = view.frame.origin,但没有帮助。 -
您无法使用
frame设置位置,因为未使用您的自动调整大小掩码。您必须为每个标签添加 X 和 Y 位置的约束。否则位置将是随机的。 -
感谢您的澄清,现在它就像一个魅力。
标签: ios swift uiview uikit uilabel