如何将角半径添加到UIStackView和蒙版子视图

时间:2019-08-26 22:36:55

标签: swift uikit uistackview

我为UIStackView使用一个简单的子类为其添加背景色:

    func backgroundColor(_ color: UIColor?) {
        backgroundView.backgroundColor = color
    }

    func cornerRadius(_ radius: CGFloat) {
        backgroundView.clipsToBounds = true
        backgroundView.layer.cornerRadius = radius
    }

问题在于使用自定义视图作为容器的拐角半径不会遮盖arrangedSubviews。我试图通过覆盖addArrangedSubview方法来解决此问题:

    override func addArrangedSubview(_ view: UIView) {
        super.addArrangedSubview(view)
        view.mask = backgroundView
    }

但这会使控制台产生奇怪的事情和垃圾邮件:

  

-更改属性掩码   仅变换图层,将无效

1 个答案:

答案 0 :(得分:2)

您可以将堆栈视图作为子级添加到背景,并用角遮罩背景,而不是在堆栈视图中添加背景。

let wrapper = UIView()               // Creating background
wrapper.layer.cornerRadius = 10
wrapper.layer.masksToBounds = true
wrapper.backgroundColor = .yellow

let stack = UIStackView()            // Creating stack
stack.frame = wrapper.bounds
stack.autoresizingMask = [.flexibleWidth, .flexibleHeight]
wrapper.addSubview(stack)
相关问题