1

我已经实现了一些运行良好的代码,可以根据触发的计时器自动滚动 UIScrollview。

这里是:

....
CGPoint offset;
....
offset = scroller.contentOffset;
....
- (void) scrollWords: (NSTimer *) theTimer
{
offset.y = offset.y+300;
[UIScrollView beginAnimations:@"scrollAnimation" context:nil];
[UIScrollView setAnimationDuration:50.0f];
[scroller  setContentOffset:offset];
[UIScrollView commitAnimations];

}

但是,我注意到滚动发生时,滚动速率会发生变化;中途每秒滚动 2 或 3 行文本,但在开始和结束时速度要慢得多,可能只有每秒 0.5 行。有什么方法可以控制滚动率吗?

提前致谢。

保罗。

4

1 回答 1

1

你正在寻找setAnimationCurve:. 具体来说,您所描述的是UIViewAnimationCurveEaseInOut. 尝试添加[UIScrollView setAnimationCurve:UIAnimationCurveLinear];

此外,您正在使用旧式动画代码。如果您的目标是 iOS 4 或更高版本,请查看这种更友好的新样式(在我看来):

- (void) scrollWords: (NSTimer *) theTimer
{
    offset.y = offset.y+300;
    [UIScrollView animateWithDuration:50.0f delay:0 options:UIViewAnimationOptionCurveLinear animations:^{
        [scroller setContentOffset:offset];
    }];
}

使用延迟参数,您甚至可以摆脱您的 NSTimer。使用此代码,您可以在 5 秒后滚动表格视图。

- (void) scrollWordsLater
{
    offset.y = offset.y+300;
    [UIScrollView animateWithDuration:50.0f delay:5.0 options:UIViewAnimationOptionCurveLinear animations:^{
        [scroller setContentOffset:offset];
    }];
}
于 2013-02-07T19:45:00.250 回答