2010-02-24 6 views
0

J'ai un CALayer que je veux changer l'animation personnalisée pour qu'elle apparaisse à l'écran. J'ai créé un délégué pour que je puisse attraper la méthode:Comment remplacer l'animation personnalisée pour un CALayer apparaissant

- (id <CAAction>)actionForLayer:(CALayer *)layer forKey:(NSString *)key 

Et je vérifier que la clé soit égale à kCAOnOrderIn, cependant, la couche n'a pas été dit ce qu'il est des limites seront encore (il actuellement rapports (0, 0, 0, 0) pour les limites). Alors j'ai essayé de vérifier que la touche soit égale à "bounds" mais je reçois toujours le même rect (0, 0, 0, 0).

L'animation que je veux faire est au lieu de la couche progressivement "unfading" sur l'écran via l'opacité, je veux qu'il se développe sur l'écran de petit et au milieu de ses limites. Mais pour ce faire, j'ai besoin de savoir ce que seront les limites. Y at-il de toute façon à le savoir pour que je puisse remplacer l'animation personnalisée, ou est-ce que je ne fais que l'aborder de la mauvaise façon?

Merci

Répondre

1

Je sais que c'est de 3 mois, mais je cherchais une réponse à un problème similaire et notez que cela ne comporte pas de réponse (un Je voudrais un peu) représentant;

J'écrase l'actionForLayer: forKey: sur un UIView (iPhone SDK) qui est automatiquement défini comme délégué à son CALayer de support afin d'injecter une action différente pour anchorPoint. Je remarque que je peux avoir accès à l'ancienne valeur via PresentationLayer du CALayer et la nouvelle valeur est dans le modelLayer. Mais ce qui se passe dans votre cas, c'est que le système appelle l'action onOrderIn (peut-être au moment où la couche est ajoutée à la hiérarchie de vue) avant que vous ayez indiqué à la couche ses limites. En fait, c'est normal.

Vous devez attendre les "bornes" en plus de la touche "onOrderIn".

Attendez-vous d'autres clés? "onOrderOut" ou "hidden"?

Cheers, Corin

+0

ça alors, oui, c'était il y a un certain temps. Je ne veux pas marquer cela comme la réponse jusqu'à ce que je la teste avec ce que j'essayais de faire à l'époque. Je vais devoir vous revenir là-dessus. – DonnaLea