J'ai un CALayer que je veux animer sur l'écran. J'ai créé deux méthodes: une diapositive ouvre la couche et une diapositive à proximité. Ces deux fonctionnent en affectant une propriété à la propriété de transformation du calque.Problème avec CAAnimation et les transformations CALayer
Maintenant, je veux utiliser un CAKeyFrameAnimation pour ouvrir le calque. J'ai réussi à faire fonctionner le calque, mais maintenant je ne peux pas faire glisser le calque en utilisant ma vieille méthode. J'essaie de comprendre pourquoi c'est. Toute aide est la bienvenue.
codepour mon CALayer:
- (id)init
{
if(self = [super init])
{
bIsOpen = NO;
closeTransform = self.transform;
openTransform = CATransform3DMakeTranslation(-235.0, 0.0, 0.0);
}
return self;
}
- (void)closeMenu
{
if(bIsOpen)
{
self.transform = closeTransform;
bIsOpen = !bIsOpen;
}
}
- (void)openMenu
{
if(!bIsOpen)
{
CAKeyframeAnimation *closeAnimation = [CAKeyframeAnimation animationWithKeyPath:@"transform"];
closeAnimation.duration = 1.0;
closeAnimation.removedOnCompletion = NO;
closeAnimation.fillMode = kCAFillModeForwards;
closeAnimation.values = [NSArray arrayWithObjects:[NSValue valueWithCATransform3D:closeTransform],[NSValue valueWithCATransform3D:openTransform],nil];
closeAnimation.timingFunctions = [NSArray arrayWithObject:[CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionLinear]];
[self addAnimation:closeAnimation forKey:@"transform"];
bIsOpen = !bIsOpen;
}
}