Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

UIScrollView scrollRectToVisible at custom speed

I have a UIScrollView and I'm calling scrollRectToVisible:animated:YES on it. I would like to set the speed at which it is animated. Can that be done?

like image 675
samvermette Avatar asked Oct 13 '09 04:10

samvermette


2 Answers

I ended up finding a solution. In my case, the scrolling was animated programmatically after launch, to mimic a slot machine (with 3 horizontal UIScrollViews). Was doing this with the scrollRectToVisible:animated: method.

I got to set a custom speed using UIView's beginAnimation:

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDelegate:self];
[UIView setAnimationDuration:(abs(rMid-pMid)*0.3)];
scrollMid.contentOffset = CGPointMake(rMid*320, 0);
[UIView commitAnimations];

AnimationDuration depends on the distance the scroller has to move between each "drawing".

like image 130
samvermette Avatar answered Nov 07 '22 05:11

samvermette


A modern version with blocks:

[UIView animateWithDuration:1.0 animations:^{
    [self.scrollView scrollRectToVisible:CGRectMake(...) animated:NO];
} completion:^(BOOL finished) {
    ...
}];
like image 39
Markus Rautopuro Avatar answered Nov 07 '22 04:11

Markus Rautopuro