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

CALayerに独自の外観を持たせるには? - デリゲートデザインパターンを利用してのcontents加工

Icon comment count 0
Icon stock count 0

2 デリゲートデザインパターンを利用してのcontents加工

「デリゲートデザインパターンを使い、用意してもらったオフスクリーンへ描画する」方法は、UIViewとself.layer間で利用されている方法です。私たちはUIViewの-drawRect:メソッドをオーバーライドすることで、暗黙裏にこの方法を利用していました。

まずは、このデリゲートデザインパターンを利用する方法を、customLayerのdelegateプロパティにViewController自身を設定する事で、実際に試してみましょう。

新規作成したCALayerのデリゲートオブジェクトにUIViewを指定してはいけない

UIViewやその派生クラスのインスタンスを、新規作成したCALayerのデリゲートオブジェクトとして指定してはいけません。UIViewは自身の持つCALayerに対し、デリゲートオブジェクト以上の密接な関係を持っていて、他のCALayerのデリゲートオブジェクトとして設定されると予想外の動きをします。

UIView派生クラスを定義し、その中で新規に独自画像が必要なCALayerを作ったら、おもわずdelegateプロパティにselfを渡したくなりますが、これはUIView Class Referenceのlayerプロパティの説明部分で明確に禁止されています。またUIViewのself.layerのdelegateプロパティを、持ち主のUIViewから別のオブジェクトに変更する事も禁止されています。

出典情報

Medium

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

  • 著者: 國居 貴浩

コメント

    コメントはありません