4

J'ai une vue de navigateur d'image personnalisée avec la sous-classe IKImageBrowserCell dans laquelle j'ai ajouté un petit signe graphique que j'aimerais animer à certaines occasions.Animation de CALayer dans IKImageBrowserCell

C'est un peu comme le signe "i" sur la vue Coda Sites de Panic (que je suppose être un ImageBrowserView personnalisé ... non?). Sur la vue des sites de Coda, si vous passez votre temps sur un projet, le peu de choses que je fais disparaît et disparaît lorsque vous sortez.

Essayez de reproduire cet effet, et j'ai du mal à le faire.

Je suis sous-classé et je IKImageBrowserCell l'enregistrement d'une référence à la couche pendant layerForType ..

Puis, quand la souris du signe passe au-dessus je suis en train de changer l'opacité, mais il ne change pas.

Le code de détection de vol stationnaire lui-même fonctionne, je sais NSLogs mais l'animation implicite de CALayer (signLayer.opacity = 1.0) coups de pied jamais.

Toute suggestion?

Peut-être qu'il me manque quelque chose (un peu nouveau pour Core Animation).

Merci

+0

Et via le débogage/journalisation, vous voyez que signLayer n'est pas nul au moment où vous modifiez l'opacité? Rappelez-vous qu'il ne se bloquera pas si vous essayez de définir l'opacité de l'instance nulle. –

+0

@Aviad. La première chose que j'ai vérifiée :) il y a certainement un CALayer là – Ben

+0

Et vous êtes sûr que le calque est affiché autrement (supposons qu'il a été initialisé avec l'opacité à 1?). Il se peut que ce soit _needsDisplay_ ou peut-être qu'il soit si invisible qu'il n'attrape pas le hover (bien que vous ayez dit que vous l'aviez vérifié) –

Répondre

0

Essayez ceci:

CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"opacity"]; 
animation.duration = 0.8s //the duration of the fade 
animation.repeatCount = 0; 
animation.autoreverses = NO; 
animation.fromValue = [NSNumber numberWithFloat:1.0]; 
animation.toValue = [NSNumber numberWithFloat:0.0]; 
[myLayer addAnimation:animation [email protected]"fadeOut"]; 

Pour fanent la couche, allumez le fromValue avec le twoValue et Renommez la clé.

Espérons que cela aide.

+0

J'ai déjà essayé ça, ça ne marche pas non plus. Fondamentalement, aucune animation de base ne se déclenche. – Ben

+0

Avez-vous défini le délégué du calque sur son contrôleur de vue? –

+0

Je suis dans un IKImageBrowserCell, ce n'est pas exactement un contrôleur de vue. Pourquoi voudrais-je définir un délégué? Je ne suis pas personnalisé dessinant la couche. – Ben