2017-02-13 9 views
0

プログラミング指向のプログラミングを学びたい。そして、StartButtonStopButtonのサブクラスはどちらもちょうどRoundableプロトコルに準拠しているので、それらの内部には丸みのあるレイヤーがあります。プロトコルのアプローチでそれをする迅速にプロトコル指向の方法でUIButtonサブクラスにレイヤーを追加する方法は?

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

プロトコルを使用してコードを共有しようとする場合は、共有コードをプロトコル拡張にする必要があります。

プロトコルには、layerbackgroundLayerプロパティも含める必要があります。そのため、プロトコル拡張でアクセスできるようにします。

+0

これの例がありますか? backgroundLayerはボタンの初期化時にどのように追加できますか? –

+0

実際には、シェイプを実装したUIButtonサブクラスを作成し、その上から 'StartButton'と' StopButton'を継承する方が理にかなっています。プロトコルは他のオブジェクトに見えるビヘイビアを記述するためのものですが、丸みのある形状は内部実装の詳細です。だから、プロトコルを使って練習するのは良い事例ではありません。 – Uncommon

+0

これはありがとうございます。私はいくつかのより適切なケースでプロトコルを試してみます。 –

関連する問題