親切すぎるiPhoneアプリ開発の本

色パレットをCALayerで作るには - コンピューティッド・プロパティの利用

Icon comment count 0
Icon stock count 0

2 コンピューティッド・プロパティの利用

ViewController側での-changed:メソッドの修正は、UIViewからCALayerへの変更に伴う当然の対応なのですが、そもそもPalletが、選択されたUIColorを示すようにしておけば、今回のような修正は必要ありませんでした。

2.1 private、読み取り専用のコンピューティッド・プロパティの利用

例えばPallet側に、次のような読み取り専用のコンピューティッド・プロパティ(selectedColorと命名)を用意しておけば、色パッチにUIViewを利用しようが、CALayerを利用しようがViewController側は影響を受けません。

↓ Pallet.swift サンプル:11/Pallet-08
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

出典情報

Medium

親切すぎるiPhoneアプリ開発の本

  • 著者: 國居 貴浩

コメント

    コメントはありません