我想以面向协议的方式学习编程。我希望StartButton
和StopButton
子类都符合Roundable
协议,这样他们就可以在其中包含一个圆形图层。
现在我的StartButton子类看起来像这样:
var backgroundLayer: CAShapeLayer = CAShapeLayer()
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
backgroundLayer.fillColor = Colors.Background.button.cgColor
backgroundLayer.rasterizationScale = 2.0 * UIScreen.main.scale
backgroundLayer.shouldRasterize = true
layer.addSublayer(backgroundLayer)
}
override func layoutSubviews() {
super.layoutSubviews()
backgroundLayer.path = UIBezierPath(ovalIn: self.bounds).cgPath
}
采用协议方法最好的方法是什么?
答案 0 :(得分:0)
如果您尝试使用协议来共享代码,那么共享代码需要进入协议扩展。
您的协议还需要包含layer
和backgroundLayer
属性,以便可以在协议扩展中访问它们。