2009-10-07 9 views
2

Je voudrais donner à un UIButton dans mon application un effet "pulsant" continu où il s'anime à travers une série d'images, puis revient en arrière à travers ces mêmes images. J'ai trouvé des exemples de UIImageViews en utilisant leur propriété animationImages, mais tout ce que j'ai trouvé pour UIButtons est l'animation en changeant leur alpha. La méthode UIView setAnimationRepeatAutoreverses est ce que je veux pour la boucle, mais je ne comprends pas comment utiliser un tableau d'images dans un bloc d'animation pour un UIButton. Est-ce possible ou est-ce qu'une approche NSTimer/setImage est recommandée? Tous les exemples sont très appréciés.Animer des images UIButton

Répondre

1

Vous pouvez ajouter une UIImageView en tant que sous-vue de votre bouton et utiliser sa propriété animationImages. Si vous souhaitez utiliser la propriété backgroundImage de votre UIButton, vous pouvez essayer de trouver son UIImageView correspondant en tant qu'enfant de UIButton, et appliquer la même technique animationImages.

+0

Hmm j'ai supprimé l'image par défaut du UIButton dans IB et essayé d'ajouter le UIImageView via la sortie du UIButton dans viewDidLoad: UIImageView * myButtonImage = [[UIImageView alloc] initWithImage: [UIImage imageNamed: @ "myButton_ON_01.png"]]; \t [self.myButton addSubview: myButtonImage]; \t [self.myButton bringSubviewToFront: myButtonImage]; \t [self.myButton setNeedsLayout]; J'ai également essayé [self.myButton setNeedsDisplay]; au lieu de setNeedsLayout mais je n'arrive pas à voir apparaître l'image. – Ian

+0

Eh bien, je vais être ... Je suis juste revenu à ça, en commençant à le déchirer et maintenant ça marche! Je devais juste définir les animationsImages, animationDuration, puis démarrerAnimating. Je vous remercie! – Ian

6

Alors que la technique fonctionne sous-vue, d'une manière plus simple est de simplement définir la animationImages propriété sur imageView du UIButton. À partir des documents:

Bien que la propriété [imageView] soit en lecture seule, ses propres propriétés sont en lecture/écriture. Utilisez ces propriétés pour configurer l'aspect et le comportement de la vue du bouton .

Par exemple:

self.pulsingButton.imageView.animationImages = 
    [NSArray arrayWithObjects:[UIImage imageNamed:@"button1.png"], 
           [UIImage imageNamed:@"button2.png"], 
           nil]; 
+0

cela ne fonctionne pas pour mon sur 4.3. Est-ce que ça marche pour les autres? J'ai mis animationImages et animationDuration et j'ai appelé startAnimating. juste obtenir un bouton vide. – jasongregori

+1

Je préfère cette approche, mais j'ai dû appeler setImage: forState: avec la première image de l'UIButton pour afficher l'image. – JimDusseau