0
我想学习面向协议的编程方式。我希望StartButton
和StopButton
两个子类都符合Roundable
协议,以便它们在它们内部具有一个四舍五入的层。如何在Swift中以面向协议的方式添加Layer到UIButton子类?
现在我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
}
请告诉我这样做与协议方法的最佳办法?
你有没有这方面的一个例子。如何在初始化按钮时添加backgroundLayer? –
实际上,创建一个UIButton子类更有意义,在该子类中实现形状的东西,然后让'StartButton'和'StopButton'继承它。协议用于描述对其他对象可见的行为,但具有圆形形状更多的是内部实现细节。所以这不是练习使用协议的好例子。 – Uncommon
好的,谢谢你。我会在其他一些更合适的情况下尝试协议。 –