2011-07-29 14 views
5

これは私の理解です:UIViewとCALayerクラスの両方にsetNeedsDisplayがあり、UIViewはCALayerを含む複合クラスです。しかし、UIViewはdrawRect:を使用し、CALayerはdrawLayer:inContext:を使用します。両方ともsetNeedsDisplayを使用して呼び出します。これはいくつかのプロトコルか何かですか?だから私はUIViewの実装のいくつかの時点で、CALayerが作成され、この層のデリゲートがUIViewクラスに設定されていると思いますか?まさにこの2つのクラスの関係は何ですか? UIViewのdrawRect:は基本的にコンテンツを解析しており、そのレイヤーのdrawLayer:inContext:を呼び出していますか?これはどんなデザインパターンですか?私はこれらの2つのクラスがどのように働くかを頭に入れて、感謝しています。UIViewとCALayerの関係は何ですか

答えて

0

これはすべてAppleの実装の詳細なので、わかりません。また、異なるビュー・クラスは、そのレイヤーと異なる関係を持ちます。

例えば、UIImageViewexplicitly documentedないへの呼び出しdrawRect:です。これは、イメージを設定すると、実際にレンダリング方法を実行せずに、レイヤのcontentsプロパティを直接更新するためです。つまり、最も基本的なのは、UIViewの動作は、setNeedsDisplayがレイヤーへの呼び出しを単に転送するということです。次に、drawLayer:inContext:がビュー上で呼び出されると、UIGraphicsコンテキスト・スタッフが設定され、drawRect:が呼び出されます。

関連する問題