美文网首页
swift UIStackView 背景色 无效

swift UIStackView 背景色 无效

作者: 松龄学编程 | 来源:发表于2020-06-09 18:11 被阅读0次

合理使用 stackview,可以减少constraint的使用。constraint太多,也会对view的维护造成困难。

UIStackView是一个非渲染元素,因此不会在屏幕上绘制。 这意味着更改backgroundColor本质上不执行任何操作。 如果要更改背景色,如下所示:

class StackView: UIStackView {
    private var color: UIColor?
    var cornerRadius: CGFloat = 0
    
    override var backgroundColor: UIColor? {
        get { return color }
        set {
            color = newValue
            self.setNeedsLayout()
        }
    }

    private lazy var backgroundLayer: CAShapeLayer = {
        let layer = CAShapeLayer()
        self.layer.insertSublayer(layer, at: 0)
        return layer
    }()
    
    override func layoutSubviews() {
        super.layoutSubviews()
        if cornerRadius > 0 {
            backgroundLayer.path = UIBezierPath(roundedRect: self.bounds, cornerRadius: cornerRadius).cgPath
        } else {
            backgroundLayer.path = UIBezierPath(rect: self.bounds).cgPath
        }
        
        backgroundLayer.fillColor = self.backgroundColor?.cgColor
    }
}

相关文章

网友评论

      本文标题:swift UIStackView 背景色 无效

      本文链接:https://www.haomeiwen.com/subject/kudetktx.html