如何在Swift中以面向协议的方式将层添加到UIButton子类?

时间:2017-02-13 17:34:48

标签: ios iphone swift uibutton protocols

我想以面向协议的方式学习编程。我希望StartButtonStopButton子类都符合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
  }

采用协议方法最好的方法是什么?

1 个答案:

答案 0 :(得分:0)

如果您尝试使用协议来共享代码,那么共享代码需要进入协议扩展。

您的协议还需要包含layerbackgroundLayer属性,以便可以在协议扩展中访问它们。