2012-07-31 5 views
1

Je suis à peu près désespéré de chercher ici un moyen d'ajouter une animation à un CALayer mais de le faire appliquer seulement à une partie de la couche . Ou si c'est même possible.Core Animation: Faire une animation uniquement sur une partie spécifiée d'un calque (iOS)

J'essaye d'animer une partie du texte (en utilisant actuellement UILabel) mais gardez le reste tel quel.

Voici un bon exemple:

Un compteur, lorsque vous ajoutez/supprimez un nombre seulement un des changements de chiffres.

Merci

Modifier 1:

Je suis en train de modifier la position d'un /partie/ du texte.

+0

Qu'essayez-vous de faire? Animer la transformation/alpha/position d'une partie du texte? –

Répondre

2

Ce que vous décrivez n'est pas possible. L'animation de base s'applique à une couche entière. L'animation UIView s'applique à une vue entière.

Si vous voulez animer une partie d'une couche/vue, vous n'aurez pas besoin de la découper en morceaux et d'animer seulement la partie que vous voulez changer.

Une exception à ceci est que vous pouvez animer le chemin d'un CAShapeLayer. Tant que le chemin garde la même structure (nombre/type de points de contrôle), les modifications du chemin sont animées.

Si vous aviez un calque de forme dans lequel le texte était défini à l'aide d'un chemin et que vous pouviez trouver un moyen de le transformer tout en conservant le même nombre et le même type de points de contrôle.

Il est également possible d'animer les modifications apportées au masque d'une couche. Avec cela, vous pouvez révéler ou cacher une partie d'un calque, ce qui pourrait vous donner l'effet d'animer une partie d'un calque. Vous pouvez par exemple faire en sorte que la partie centrale d'un calque disparaisse pour devenir transparente.

+0

Merci Duncan pour votre contribution! Donc, si je comprends bien votre déclaration, je devrais ajouter un masque à la partie qui doit être modifiée et travailler à partir de là? Comment pourrais-je accomplir cela? – G33kz0r

+1

Créez un nouveau calque de la même taille que le calque que vous souhaitez masquer. Ajoutez-le en tant que masque pour le calque que vous souhaitez modifier. Le canal alpha de la couche de masque détermine quelles parties de la couche sont affichées. (Lorsque le masque est opaque, votre couche s'affiche et, lorsqu'elle est transparente, la couche est masquée.) Vous pouvez soit installer une image CGImage dans le calque de masque, soit créer une couche CAShapeLayer et installer un objet CGPath dans la couche de forme. BTW, que diriez-vous d'accepter ma réponse et de le voter? –

+0

Merci encore Duncan. Pas de soucis, j'attendais ta réponse pour le +1. – G33kz0r