2010-03-01 5 views
2

J'étais presque sûr d'avoir vu des discussions sur le Net, mais maintenant je n'arrive plus à trouver quoi que ce soit. La question est simple: existe-t-il un moyen d'utiliser par exemple CABasicAnimation pour animer une propriété sur un objet qui n'est pas un 'calque'? (Par exemple, la propriété'volume 'sur un'AVAudioPlayer'.)Utilisation de Core Animation avec des objets autres que CALayers

Sinon, existe-t-il un moyen de le faire fonctionner autrement que sous-classer'CALayer'? Peut-être un protocole à se conformer?

EDIT: Que diriez-vous de faire cela sur l'iPhone OS?

Répondre

7

Vous pouvez en effet le faire. Votre objet doit implémenter le protocole NSAnimatablePropertyContainer et renvoyer un objet CAAnimation valide pour chaque propriété que vous souhaitez animer dans la méthode de classe +defaultAnimationForKey:. Pour répondre à votre question mise à jour, non, vous ne pouvez pas le faire sur l'iPhone actuellement car il n'y a pas de protocole NSAnimatablePropertyContainer disponible dans iPhone OS et vous ne pouvez pas obtenir un objet proxy animator à partir d'autres objets.

+0

Merci Rob! Maintenant, la question de suivi: est-ce possible sur l'iPhone OS? – Felixyz

+0

J'ai mis à jour ma réponse. En bref, non. –

+0

Des pointeurs sur la façon dont on pourrait procéder à l'implémentation de NSAnimatablePropertyContainer? Plus précisément l'animateur - (id); méthode? – dmaclach

Questions connexes