2010-11-04 37 views
4

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

+1

可能重复[的UIScrollView scrollRectToVisible在自定义的速度(http://stackoverflow.com/questions/1558262/uiscrollview-scrollrecttovisible-at-custom-speed) – Sebastian 2015-01-27 22:08:44

回答

6

不,没有公共方法。持续时间固定为0.3秒。

一个私人的,未公开的API改变时间:

@interface UIScrollView(UIScrollViewInternal) 
-(void)_setContentOffsetAnimationDuration:(NSTimeInterval)duration; 
@end 

,但因为所有的未公开的API,使用这将导致从AppStore的拒绝。

+0

其实,我打算分发特设可能,不成问题。我在哪里可以找到这个方法定义?谢谢! – Moshe 2010-11-04 21:24:13

+0

@Moshe:必须手动声明。您可以将上面的类别包含到使用它的文件中。 – kennytm 2010-11-04 21:26:21

+0

其实我只是把它叫做'[scrollView _setContentOffsetAnimationDuration:8.0]'而且它工作正常。请注意,如果您使用NSTimer,像我一样,动画持续时间必须大于定时器的时间间隔,否则它会变得非常活跃。 – Moshe 2010-11-04 21:30:35

13

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

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

但是,这并不会调用-scrollViewDidScroll:委托方法。 – iamjustaprogrammer 2014-03-05 00:21:18

+0

是的,但这不是问题作者的要求。 – Camsoft 2016-05-12 14:18:47

相关问题