addSubview 和 addArrangedSubview 不显示内容
addSubview and addArrangedSubview not showing content
我将 UILabel
添加到 UIView
,然后将 UIView
添加到 UIStackView
,但 UILabel 未显示。
override func viewDidLoad() {
super.viewDidLoad()
configureStackView()
label.text = "test"
containerView.addSubview(label)
stackView.addArrangedSubview(containerView)
view.addSubview(stackView)
setStackViewConstraints()
}
func configureStackView() {
stackView.axis = .vertical
stackView.distribution = .fill
stackView.alignment = .fill
stackView.spacing = 5
}
func setStackViewConstraints() {
stackView.translatesAutoresizingMaskIntoConstraints = false
stackView.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true
stackView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
stackView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
stackView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
stackView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
}
我尝试为视图设置某种大小,但不起作用:
containerView = UIView(frame: CGRect(x: 0, y: 0, width: 200, height: 200))
或为 widthAnchor
、leadingAnchor
或 trailingAnchor
将标签设置为 containerView
的约束,但这也不起作用。
UIView 本身没有 intrinsicContentSize
,UIStackView
用于确定放置在 stackView
中时视图的大小。要么将标签的四个边缘设置为容器边缘的约束
label.topAnchor.constraint(container.topAnchor, constant: myTopConstant).isActive = true
label.leading....
label.bottom....
label.trailing....
label.setContentHuggingPriority(to: .defaultLow, axis: .vertical)
(以上,如果您没有在 stackView 中放置任何其他视图,请放宽 contentHuggingPriority
;因为它具有固定的高度和 distribution = .fill
,您的 stackView 将尝试拉伸 arrangedViews 以适应高度。如果 label/container 是唯一的候选者,您将打破标签上 .required
contentHugging 的约束)
或者给容器一个 well-defined 高度(因为你的 stackView 的轴是垂直的)
containerView.heightAnchor.constraint(equalTo: ....).isActive = true
此外,在您的容器中,设置
translatesAutoresizing... = false
我将 UILabel
添加到 UIView
,然后将 UIView
添加到 UIStackView
,但 UILabel 未显示。
override func viewDidLoad() {
super.viewDidLoad()
configureStackView()
label.text = "test"
containerView.addSubview(label)
stackView.addArrangedSubview(containerView)
view.addSubview(stackView)
setStackViewConstraints()
}
func configureStackView() {
stackView.axis = .vertical
stackView.distribution = .fill
stackView.alignment = .fill
stackView.spacing = 5
}
func setStackViewConstraints() {
stackView.translatesAutoresizingMaskIntoConstraints = false
stackView.widthAnchor.constraint(equalTo: view.widthAnchor).isActive = true
stackView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
stackView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
stackView.topAnchor.constraint(equalTo: view.topAnchor).isActive = true
stackView.bottomAnchor.constraint(equalTo: view.bottomAnchor).isActive = true
}
我尝试为视图设置某种大小,但不起作用:
containerView = UIView(frame: CGRect(x: 0, y: 0, width: 200, height: 200))
或为 widthAnchor
、leadingAnchor
或 trailingAnchor
将标签设置为 containerView
的约束,但这也不起作用。
UIView 本身没有 intrinsicContentSize
,UIStackView
用于确定放置在 stackView
中时视图的大小。要么将标签的四个边缘设置为容器边缘的约束
label.topAnchor.constraint(container.topAnchor, constant: myTopConstant).isActive = true
label.leading....
label.bottom....
label.trailing....
label.setContentHuggingPriority(to: .defaultLow, axis: .vertical)
(以上,如果您没有在 stackView 中放置任何其他视图,请放宽 contentHuggingPriority
;因为它具有固定的高度和 distribution = .fill
,您的 stackView 将尝试拉伸 arrangedViews 以适应高度。如果 label/container 是唯一的候选者,您将打破标签上 .required
contentHugging 的约束)
或者给容器一个 well-defined 高度(因为你的 stackView 的轴是垂直的)
containerView.heightAnchor.constraint(equalTo: ....).isActive = true
此外,在您的容器中,设置
translatesAutoresizing... = false