私はアニメーション化された無限スクロール ビューを作成しており、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];
}