合理使用 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
}
}
网友评论