【问题标题】:addSubview and addArrangedSubview not showing contentaddSubview 和 addArrangedSubview 不显示内容
【发布时间】:2020-08-13 17:40:51
【问题描述】:

我将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))

或将标签的约束设置为widthAnchorleadingAnchortrailingAnchorcontainerView,但这也不起作用。

【问题讨论】:

    标签: ios swift uiview nslayoutconstraint uistackview


    【解决方案1】:

    UIView 本身没有intrinsicContentSizeUIStackView 使用它来确定放置在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 将尝试拉伸排列的视图以适应高度。如果标签/container 是唯一的候选者,您将通过标签上的.required contentHugging 打破限制)

    或者给容器一个明确定义的高度(因为你的 stackView 的轴是垂直的)

    containerView.heightAnchor.constraint(equalTo: ....).isActive = true
    

    另外,在你的容器中,设置

    translatesAutoresizing... = false
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-17
      • 1970-01-01
      • 1970-01-01
      • 2014-02-14
      • 2012-09-24
      • 2020-09-06
      相关资源
      最近更新 更多