【问题标题】:IOS| UILabel not visible in UIStack viewIOS| UILabel 在 UIStack 视图中不可见
【发布时间】:2021-03-02 01:35:06
【问题描述】:

我正在尝试使用 UI 标签和多个水平堆栈视图构建垂直堆栈视图,但是,我只在 UI 中看到多个水平堆栈,而不是 UI 标签。这是一些代码

final class FinalView: UIView {

   let mainStackView = UIStackView()

     init() {
        super.init(frame: .zero)

         let label: UILabel = UILabel()
         label.translatesAutoresizingMaskIntoConstraints = false
         label.text = "Sorry ?"

               ...

        let verticalStackView = UIStackView(arrangedSubviews: multiplehorizontalViews)
        verticalStackView.axis = .vertical
        verticalStackView.translatesAutoresizingMaskIntoConstraints = false
        verticalStackView.spacing = 5.0

         mainStackView.addArrangedSubview(label)
         mainStackView.addArrangedSubview(verticalStackView)
         mainStackView.translatesAutoresizingMaskIntoConstraints = false
         mainStackView.axis = .vertical
   }
}

我只看到verticalStackView 而不是label。当我从代码中删除这个mainStackView.addArrangedSubview(verticalStackView) 时,我可以看到标签。但是当它在那里时,我看不到标签。关于这个问题的任何想法或任何调试技巧?

【问题讨论】:

    标签: ios swift uistackview


    【解决方案1】:

    您的代码运行良好。刚刚使用以下代码检查了 iOS 13

    let mainStackView = UIStackView()
        mainStackView.translatesAutoresizingMaskIntoConstraints = false
        view.addSubview(mainStackView)
    
        var vflString = "V:|-[mainStackView]-|"
        var vflConstraints = NSLayoutConstraint.constraints(withVisualFormat: vflString, options: [], metrics: nil, views: ["mainStackView" : mainStackView])
        view.addConstraints(vflConstraints)
    
        vflString = "H:|-[mainStackView]-|"
        vflConstraints = NSLayoutConstraint.constraints(withVisualFormat: vflString, options: [], metrics: nil, views: ["mainStackView" : mainStackView])
        view.addConstraints(vflConstraints)
    
    
        let label: UILabel = UILabel()
        label.translatesAutoresizingMaskIntoConstraints = false
        label.text = "Sorry ?"
    
        let label1 = UILabel(frame: .zero)
        label1.text = "Label 1"
        let label2 = UILabel(frame: .zero)
        label2.text = "Label 2"
        let label3 = UILabel(frame: .zero)
        label3.text = "Label 3"
    
        let multiplehorizontalViews = [label1, label2, label3]
    
        let verticalStackView = UIStackView(arrangedSubviews: multiplehorizontalViews)
        verticalStackView.axis = .horizontal
        verticalStackView.translatesAutoresizingMaskIntoConstraints = false
        verticalStackView.spacing = 5.0
        verticalStackView.distribution = .fillProportionally
    
        mainStackView.addArrangedSubview(label)
        mainStackView.addArrangedSubview(verticalStackView)
        mainStackView.translatesAutoresizingMaskIntoConstraints = false
        mainStackView.axis = .vertical
    

    【讨论】:

    • 不知道为什么它对我不起作用。有没有办法直接添加label let verticalStackView = UIStackView(arrangedSubviews: multiplehorizontalViews)
    • 你能分享一个截图,以便我更好地了解究竟是什么失败了吗?还有什么限制在您的视野中被打破?
    【解决方案2】:

    我很确定这不是你的情况,而是我的情况 这适用:

    UIBezierPath: roundedRect: byRoundingCorners: cornerRadii: acts weird

    层上的贝塞尔路径正在从堆栈视图中剪切所有内容

    您可以在可视化调试器中检查发生了什么:如果标签 文本显示在那里,那么这是图层剪辑的问题

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-07-15
      • 2022-01-17
      相关资源
      最近更新 更多