2 コンピューティッド・プロパティの利用
ViewController側での-changed:メソッドの修正は、UIViewからCALayerへの変更に伴う当然の対応なのですが、そもそもPalletが、選択されたUIColorを示すようにしておけば、今回のような修正は必要ありませんでした。
2.1 private、読み取り専用のコンピューティッド・プロパティの利用
例えばPallet側に、次のような読み取り専用のコンピューティッド・プロパティ(selectedColorと命名)を用意しておけば、色パッチにUIViewを利用しようが、CALayerを利用しようがViewController側は影響を受けません。
class Pallet: UIControl { ・・・
private var selectedLayer:CALayer? ← 非公開にする
・・・
↓現在、選択中の色をUIColorとして示す。未選択時はnilを示す
var selectedColor:UIColor? {
if let color = self.selectedLayer?.backgroundColor {
return UIColor(CGColor: color)
}
return nil
}
}
注意)selectedColorはゲッターのみなのでget { }による囲いを省略しました。毎回UIColorを作成するのが嫌な人は、selectedLay
この記事は会員限定です。会員登録をすると続きをお読みいただけます。
ログイン / 新規登録