2011-09-09 13 views
1

私はセクションを持つテーブルのようなスクロール可能なビューを持っています。レイアウト構造は右の図のとおりです。 enter image description hereアニメーションをCAScrollLayerアニメーションと同期させる方法

ビューにはセクションがあるスクロールレイヤーがあります。各セクションにはタイトルと行があります。 上にスクロールすると、通常のUITableViewのように行の上にセクションタイトルが表示されたままにしておく必要があります。 enter image description here

レイヤーをスクロールすると、スクロール位置をセクションに渡すので、タイトルの位置を調整できます。

セクションで
- (void)updateContentVerticalScrollPosition 
{ 
    [CATransaction begin]; 
    [_scrollableContentLayer scrollToRect:scrollRect]; 
    [_section setVerticallScrollPositionInSuperlayer:_verticalScrollPosition]; 
    [CATransaction commit]; 
} 

私はタイトルの位置を更新:ビューで

_titleLayer.position = CGPointMake(0, titleLayerVerticalPosition); 

それは動作しますが、私は、トランザクションにスクロール層と異なる速度で、タイトルの動きを使用していても。だから、タイトルレイヤーが浮いているように見えます。

誰でもスクロールレイヤーとタイトルレイヤーのアニメーションを同期させる方法を知っていますか?

答えて

1

解決策が見つかりました。 NSScrollLayerは、デフォルトのタイミング関数を使用してスクロールをアニメーション化するのではなく、リニアアニメーションを使用します。だから私が必要とするのは、@ "position"キーの動作を変更することだけです。

CABasicAnimation* animation = [[CABasicAnimation alloc] init]; 
animation.duration = 0.25; 
animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear];  
[_titleLayer setActions:[NSDictionary dictionaryWithObject:animation forKey:@"position"]]; 
[animation release]; 
関連する問題