1

私はアニメーション化された無限スクロール ビューを作成しており、Apple のStreetScrollerサンプルを使用しました。スクロールビューのコンテンツ オフセット (40 ピクセル程度) を設定する 1 秒のアニメーションを呼び出す NSTimer (1 秒間隔) でアニメーションを追加しています。それは完全に機能しますが、recenterIfNecessary基本的にスクロールビューのをリセットするメソッドが呼び出されたときに問題が発生しますcontentOffsetが、それもアニメーション化されているため、スクロールビューが中央に「巻き戻され」てアニメーションを再開しているように見えます。再センタリングしているときにアニメーションをキャンセルする必要があると思いますが、方法がわかりません。

NSTimer で呼び出されるコード:

- (void)performScroll {
    CGFloat currentOffset = self.horizontal ? self.contentOffset.x : self.contentOffset.y;
    CGFloat newOffset = currentOffset + self.kActualPixelsPerSecond;
    CGPoint offsetPoint;
    if (self.horizontal)
        offsetPoint = CGPointMake(newOffset, 0.0);
    else
        offsetPoint = CGPointMake(0.0, newOffset);

    [UIView animateWithDuration:kScrollingTimeInterval
                          delay:0
                        options:UIViewAnimationOptionCurveLinear | UIViewAnimationOptionBeginFromCurrentState
                     animations:^{
                                [self setContentOffset:offsetPoint animated:NO];
                     } completion:nil];

}
4

1 に答える 1