Анимированная прокрутка UIScrollView с помощью CoreAnimation

Извините за большой вопрос, настоящие вопросы выделены жирным шрифтом внизу, теперь некоторые пояснения.

Я использую CoreAnimation в своем проекте для анимации некоторых движущихся таким образом объектов.

CABasicAnimation *moveAnimation;        
moveAnimation=[CABasicAnimation animationWithKeyPath:@"position"];      
moveAnimation.duration = 2.0;       
moveAnimation.repeatCount=1;        
moveAnimation.autoreverses=NO;  
moveAnimation.delegate = self;
moveAnimation.fromValue = [NSValue valueWithCGPoint:[crawler.layer position]];
moveAnimation.fillMode = kCAFillModeForwards;
moveAnimation.removedOnCompletion = NO;
CGPoint p;
moveAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(100, 100)];
[crawler.layer addAnimation:moveAnimation forKey:@"moveAnimation"];

А теперь мне нужно оживить прокрутку какого-нибудь UIScrollView. Я не могу использовать метод setContentOffset: (CGPoint) contentOffset animated: (BOOL) animated , потому что он не может настраивать продолжительность анимации.

Я могу сделать это так

CGContextRef context = UIGraphicsGetCurrentContext();
[UIView beginAnimations:nil context:context];
[UIView setAnimationCurve:UIViewAnimationCurveLinear];
[UIView setAnimationDuration:2];
[UIView setAnimationDelegate:self];
scrollView.contentOffset = CGPointMake(scrollView.contentOffset.x + 200, scrollView.contentOffset.y);
[UIView commitAnimations];

, но это не CoreAnimation, и я считаю, что использование двух разных методов анимации в одном приложении не является хорошей практикой.

Есть ли способ использовать CoreAnimation для анимации прокрутки содержимого UIScrollView до настраиваемой точки с настраиваемой продолжительностью анимации? P.S. Простите за плохой английский.

16
задан Padavan 23 February 2012 в 08:09
поделиться