2012-02-29 6 views
1

コアアニメーションレイヤー階層の兄弟レイヤー間の関係に関する興味深い問題があります。ここに私の階層です:テーブルビューのレイヤーが兄弟レイヤーに影響するようです。

Animation layer: <CALayer: 0x7ccf060> <--- custom animation layer 

Content view's sublayers: (
    "<CALayer: 0x7e7db10>", <--- map view layer 
    "<CALayer: 0x7cbfe10>", <--- table view layer 
    "<CALayer: 0x7ccf060>" <--- custom animation layer 
) 

だから私は、私は(その内容のすべてがCGImageRefから提供され、いくつかの副層を含んでいる、)アニメーションのために作成する層であるそのうちの一つレイヤツリー内のいくつかの層を、持っています。

明らかに、アニメーションレイヤーは、テーブルビューレイヤーの兄弟であり、子ではありません。しかし、このカスタムアニメーションレイヤがテーブルビューのcontentOffsetに直接比例してオフセットされていること、つまりどれだけスクロールしたかがわかります。私の場合、アニメーションレイヤーは実際にはテーブルビューのイメージ表現です。ここで

は、私は兄弟としてアニメーション層を挿入する直前に少しスクロールダウンのようなテーブルビューが見えるものです:私は、テーブルビューの層をレンダリングするとき

before http://f.cl.ly/items/0H3Q283V1Z2v0h0c3t10/iOS%20Simulator%20Screen%20shot%20Feb%2028,%202012%2010.47.42%20PM.png

そしてここでは、直後でありますCGImageRefと正規CALayercontentsプロパティにソースの内容としてそれを使用します。

after http://f.cl.ly/items/0U1b2L351T3J0j0j1t0F/iOS%20Simulator%20Screen%20shot%20Feb%2028,%202012%2010.29.30%20PM.png

ここでも、レイヤの内容はテーブルビューのレイヤのイメージ表現に過ぎないので、contentOffsetがこの他のレイヤにどのように影響するかはわかりません。おそらく、レイヤーをテーブルビューのレイヤーのサブレイヤとして追加していたのであれば、どこに問題があるのか​​分かります。しかし、このアニメーションレイヤーは兄弟レイヤーなので、なぜそれが何かに影響を与えますか?

Animation layer's frame: {{0, 0}, {320, 372}} 

答えて

4

を私はscrollviewのレンダリングを最適化するなどを積層して、いくつかの空想の仕事をやっていると仮定しています。ここでは

は私もログインしてきたアニメーションレイヤのフレームです。アニメーションレイヤーのフレームが正しいため、レイヤーのレンダリングには実際には問題があります。これは、スクロールビューをオフセットして補正する必要があります。

最初にレンダリングすると、コンテキストネガティブをscrollViewsオフセットに変換します。CGContextTranslateCTM(ctx、-contentOffset.x、-contentOffset.y);次に[layer renderInContext:ctx]でレンダリングします。

+0

ブリリアント!これは完全に機能しました。テーブルビューのレイヤーの内容がその境界に基づいているという手掛かりはありませんでした。 – LucasTizma

関連する問題