Извините за большой вопрос, настоящие вопросы выделены жирным шрифтом внизу, теперь некоторые пояснения.
Я использую 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. Простите за плохой английский.