Animer le défilement de UIScrollView avec CoreAnimation
Désolé pour une grande question, la vraie question sont gras en bas, maintenant quelques explications.
Je suis l'utiliser CoreAnimation dans mon projet pour animer des objets en mouvement de ce genre.
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"];
Et maintenant, j'ai besoin d'animer le défilement de certains UIScrollView. Je ne peux pas utiliser setContentOffset:(CGPoint)contentOffset animated:(BOOL)animated
méthode, car il ne peut pas personnaliser l'animation durée.
Je peux le faire comme ça
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];
mais ce n'est pas CoreAnimation, et à l'aide de 2 différents types de techniques d'animation dans une application n'est pas une bonne pratique, je pense.
Est-il un moyen d'utiliser un CoreAnimation pour animer le défilement de UIScrollView contenu de points personnalisés avec animation personnalisée durée?
P. S. Désolé pour le mauvais anglais.
source d'informationauteur Padavan
Vous devez vous connecter pour publier un commentaire.
Vous devriez lire sur les propriétés animables, La programmation iOS 5
En effet, lorsque vous essayez d'animer des couches, Apple fournit un ensemble de propriétés animables, mais vous n'êtes pas limité à ce jeu. Vous pouvez animer tout ce que vous voulez.
Dans tous les cas, vous ne devriez pas utiliser
kCAFillModeForwards
parce qu'il va demander à l'appareil de redessiner jamais la dernière couche de présentation qui a été utilisé pour l'animation, au lieu d'utiliser une représentation en mémoire cache de la couche.Donc la façon dont vous pouvait atteindre une telle chose serait par définition une couche spécifique de la vôtre où la
contentOffset
propriété est définie comme animables. Et pour travailler, vous devriez commencer par vérifier quel type de couche supérieure de la classe est utilisé par un scrollview, de sorte que, par sous-classement et le réglage de la propriété (contentOffset
) animables, et de sous-classer votre scrollview par la définition de cette couche de la couche supérieure de la scrollview, vous pourriez peut-être obtenir ce que vous essayez de faire.C'est de la théorie!
Mais c'est ce que je voudrais essayer.
Regardez pour cette méthode et son comportement et les intentions
Une autre chose que vous pourriez lire est-ce Un exemple start. Mais cela signifie également que vous devez redessiner votre uiscrollview par vous-même!
Vous pouvez utiliser:
Vous pouvez régler la durée de l'animation de cette manière.
par exemple:
Je ne pense pas que de sorte que vous pouvez animer le point avec CoreAnimation.
Mais vous pouvez essayer
setContentOffset:animated:
c'est la méthode que vous recherchez?Vous pouvez transformer uniquement propriétés suivantes de
UIView
plus d'Informations de la
CoreAnimation
à propos de l'animation de la caisse de la La Documentation D'Apple