2010-09-03 7 views
1

J'essaie d'utiliser un UIImage comme un bouton qui donne l'impression qu'il est allumé puis éteint en moins d'une demi-seconde. Cela fonctionne bien si je l'allume, mais si je veux l'éteindre à nouveau, il ne s'allume pas du tout. J'ai une petite boucle là-dedans pour l'empêcher d'allumer et d'éteindre si vite que je ne peux pas le voir mais ça ne s'allume pas du tout. Je l'ai essayé avec et sans le [flashingButton release]. Y a-t-il quelque chose que je ne comprends pas? Puis-je addSubview et removeFromSuperView en même temps, même avec un court délai?Clignotant UILabel en tant que

if ( some conditional statements in here .......) { 

    UIImage *estimateButton1 = [UIImage imageNamed:@"FlashingButton.png"]; 
    flashingButton = [[UIImageView alloc] initWithImage:flashingButton1]; 
    flashingButton.frame = CGRectMake (146,8,165,30); 
    [self.view addSubview:flashingButton]; 
    // [flashingButton release]; 

    //  short loop in here to delay urning the button off 

    [self.flashingButton removeFromSuperview]; 

Répondre

0

Une boucle dans le thread principal bloque temporairement le programme et empêche tout dessin de se produire. Au lieu de cela, utilisez un NSTimer.

3

Le dessin de l'interface utilisateur ne se fait que plus tard dans la boucle d'exécution principale. Votre appel au addSubview ajoute flashingButton à self.view mais ne le dessine pas. Votre boucle courte bloque la boucle d'exécution principale, de sorte qu'elle n'atteint toujours pas la partie de dessin. Et puis, vous supprimez le bouton avant que la boucle d'exécution principale arrive à le dessiner.

Une solution consiste à laisser la boucle d'exécution principale continuer après avoir ajouté le bouton clignotant (afin qu'elle soit dessinée), mais créez une minuterie qui supprimera ce bouton dans le futur. Vous pouvez utiliser performSelector:withObject:afterDelay: pour ce faire.

[self.flashingButton performSelector:@selector(removeFromSuperview) withObject:nil afterDelay:0.5f]; 

Vous pouvez lire des boucles courir dans « Threading Programming Guide » et sur la façon dont le dessin se fait dans « View Programming Guide for iOS. »

+0

Merci beaucoup James pour le code et le renvoi. Le code fait exactement ce que je voulais. Prends quelques verres sur moi! – TrueScot

+0

Content de vous aider. Merci pour les boissons! –