Я хочу научиться программированию в соответствии с протоколом. И я хочу, чтобы подклассы StartButton
и StopButton
соответствовали протоколу Roundable
, так что внутри они будут иметь закругленный слой.Как добавить Layer к подклассу UIButton в протокольном режиме в swift?
Сейчас мой 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
}
Что лучший способ сделать это с подходом протоколов?
У вас есть пример этого. Как можно добавить фоновый слой при инициализации кнопки? –
На самом деле, имеет смысл создать подкласс UIButton, где вы реализуете материал фигуры, а затем наследуете от него «StartButton» и «StopButton». Протоколы предназначены для описания поведения, видимого для других объектов, но наличие круглой формы является скорее внутренней детализацией реализации. Таким образом, это не является хорошим примером для практики использования протоколов. – Uncommon
ОК, спасибо за это. Я попробую протоколы в некоторых других более подходящих случаях. –