2010-09-13 3 views
1

Je souhaite utiliser CATransition pour fournir une animation qui s'estompe entre les différents états d'une vue. Cependant, cela ne semble pas fonctionner avec une seule vue (tous les exemples que j'ai trouvés utilisent CATransition pour basculer entre différentes vues). En revanche, un CABasicAnimation fonctionne très bien.Animations Cocoa utilisant CATransition dans une seule vue

Mon example code montre ce que je fais. J'ai une vue personnalisée (TTView) avec deux propriétés que je veux animer. L'une est une couleur, animée en utilisant CABasicAnimation (simple interpolation). L'autre est un état booléen, et je veux obtenir un effet d'évanouissement quand il change. (Ignorez le fait que l'exemple l'utilise pour simplement changer la taille d'un rectangle, c'est juste pour le garder simple.)

Est-ce que je fais quelque chose de mal, ou est-ce que CATransition ne fonctionne pas dans une seule vue?

+0

Pouvez-vous s'il vous plaît coller le code pertinent dans votre question? Le lien vers le référentiel n'est pas assez direct. –

Répondre

0

Le code est un peu grand, mais voici les parties les plus pertinentes de l'implémentation TTView. La propriété scale est la valeur booléenne dont je souhaite animer la modification avec une transition.

+ (id) defaultAnimationForKey: (NSString *)key 
{ 
    if ([key isEqualToString: @"color"]) { 
    return [CABasicAnimation animation]; 

    } else if ([key isEqualToString: @"scale"]) { 
    return [CATransition animation]; 
    } 

    return [super defaultAnimationForKey:key]; 
} 

/* ... */ 

- (IBAction) toggleScale: (id)sender 
{ 
    [[self animator] setScale: !self.scale]; 
} 

Je viens de remarquer que CATransition n'est pas une sous-classe de CAPropertyAnimation, alors peut-être c'est mon vrai problème.

Questions connexes