我正在制作一个动画无限滚动视图,并且我使用了Apple 的StreetScroller示例。我正在添加一个带有 NSTimer(1 秒间隔)的动画,调用一个 1 秒的动画,我正在设置滚动视图的内容偏移量(40 像素左右)。它工作得很好,但是当调用该方法时会出现问题,该方法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];
}