有没有一种方法可以改变scrollRectToVisible的速度?

6

在滚动UIScrollView时,有没有办法改变scrollRectToVisible动画的速度?


1
可能是UIScrollView scrollRectToVisible at custom speed的重复问题。 - Sebastian
2个回答

17

只需将动画参数设置为NO,然后使用UIView的动画类方法执行自己的动画即可。

[UIView animateWithDuration:1.0f delay:0.0f options:UIViewAnimationOptionCurveEaseOut animations:^{
    [scrollView scrollRectToVisible:viewFrame animated:NO];
} completion:nil];

3
然而,这不会调用 -scrollViewDidScroll: 代理方法。 - iamjustaprogrammer
是的,但这不是问题作者的要求。 - Camsoft

6
不可以通过公共方法来更改时间,它的时长被固定在0.3秒。
但是有一种私有的、未记录的API可以更改时长:
@interface UIScrollView(UIScrollViewInternal)
-(void)_setContentOffsetAnimationDuration:(NSTimeInterval)duration;
@end

但是,像所有未记录的API一样,使用它将导致在AppStore中被拒绝。


其实,我计划进行Ad Hoc分发,这可能不是问题。我在哪里可以找到这种方法的定义?谢谢! - Moshe
@Moshe:它必须手动声明。您可以将类别包含在使用它的文件中。 - kennytm
实际上,我只是将其命名为[scrollView _setContentOffsetAnimationDuration:8.0]并且它有效了。请注意,如果你像我一样正在使用NSTimer,动画持续时间必须大于定时器的间隔,否则它会变得不稳定。 - Moshe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接