2010-07-12 6 views
0

J'ai une application qui exécute une minuterie et effectue une action 30 fois par seconde. Ce que je veux faire est de changer la taille d'un UIButton afin que chaque fois que le timer se déplace, il change le UIButton pour qu'il soit un peu plus petit. J'ai joué avec un tas de choses que j'ai trouvées en ligne et je n'arrive toujours pas à le comprendre.Shrink UIButton

Des idées?

+0

avez-vous besoin d'aide avec la minuterie ou le redimensionnement du bouton? –

+0

Vous ne pouvez pas utiliser UIViewAnimation à cette fin? – tonklon

+0

... et avec quoi avez-vous joué? Pouvez-vous inclure du code de ce que vous avez essayé? – Eric

Répondre

0

Essayez quelque chose comme:

CGRect tempFrame = myButton.frame;  
myButton.frame = CGRectInset(tempFrame,5,5); 
1

Alors, pour déplacer le commentaire sur - est-ce généralement ce que vous essayez de faire?

-(void) calledWhenTimerGoesRound 
{ 
    NSLog(@"calledWhenTimerGoesRound"); 
    [UIView beginAnimations:nil context:@"MyAnimation"]; 

    CGRect tempFrame = myButton.frame; 
    tempFrame.size.width = tempFrame.size.width - 5.0f; 
    tempFrame.size.height = tempFrame.size.height - 5.0f; 
    myButton.frame = tempFrame; 

    [UIView commitAnimations]; 
} 

À quoi ressemble votre code temporisateur? Voici et un exemple de ce qui devrait fonctionner (redimensionner le bouton plus petit chaque seconde):

- (void) startMyTimer 
{ 
    NSTimer *timer = [NSTimer timerWithTimeInterval:1 target:self selector:@selector(calledWhenTimerGoesRound) userInfo:nil repeats:YES]; 

    [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes]; 
} 
+0

Oui, je pensais que cela ferait peut-être diminuer le bouton chaque fois que la minuterie circulerait, mais ce n'est pas le cas. – evenodd

+0

Avez-vous vérifié en utilisant le débogueur de Xcode que 'myButton' n'est pas' nil'? – jrtc27

+0

Ce n'est pas, j'utilise myButton pour faire d'autres choses comme déplacer le bouton autour de l'écran pendant que la minuterie circule et ça fonctionne bien. – evenodd