2010-06-30 24 views
15

Sto creando un menu e voglio che i pulsanti "pop" indovino sullo schermo. Fondamentalmente voglio iniziare con dimensioni 0px e poi andare fino alla dimensione completa dei pulsanti. Posso animare l'alfa e la posizione se voglio ma non posso fare le dimensioni e penso che sia perché è un'immagine sul pulsante.UIButton ridimensiona con animazione

Se eseguo un UIButtonTypeRoundRect, è possibile vedere il pulsante animato dietro l'immagine ma l'immagine è statica.

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom]; 
[button setBackgroundImage:[UIImage imageNamed:@"settings.png"] forState:UIControlStateNormal]; 
button.frame = CGRectMake(20, 20, 0, 0); 
button.alpha = 0; 
[self.view addSubview:button]; 
CGRect frame = button.frame; 
[UIView beginAnimations:@"button" context:nil]; 
[UIView setAnimationDuration:1]; 
button.alpha = 1; 
frame.size.width += 53; 
frame.size.height += 53; 
button.frame = frame; 
[UIView setAnimationDelegate:self]; 
[UIView commitAnimations]; 

Così l'Alfa funziona, ma il ridimensionamento non lo fa. Ho anche giocato con stretchableImageWithLeftCapWidth per provare a dargli un contesto o qualcosa del genere, ma inutilmente.

Applausi per il vostro aiuto.

+0

Hai provato a fare il pulsante 'Scala da riempire'? – iwasrobbed

+0

sì, ricordati di provarlo in una fase. Chi ti ha derubato? – Rudiger

risposta

32

Potresti provare ad utilizzare il seguente codice?

button.transform = CGAffineTransformMakeScale(1.5,1.5); 
button.alpha = 0.0f; 

[UIView beginAnimations:@"button" context:nil]; 
[UIView setAnimationDuration:1]; 
    button.transform = CGAffineTransformMakeScale(1,1); 
    button.alpha = 1.0f; 
[UIView commitAnimations]; 

Il pulsante dovrebbe iniziare leggermente più grande e quindi ridursi. Se questo si adatta correttamente, basta regolare il fattore di scala prima e dopo il seme.

+0

Grazie, darò un'occhiata e torno da te. – Rudiger

+0

Che non ha funzionato subito. Button = CGAffineTransformMakeScale (1.5,1.5); ha generato un errore Ma in pratica puoi fare button.transform = CGAffineTransformMakeScale (1.5,1.5); e anima un aumento di scala come mi serviva. Grazie :) – Rudiger

+0

Grandi cose - Ho modificato l'esempio di codice per chiunque altro voglia utilizzarlo – davbryn

5

aggiornato per Swift:

è possibile inserire questo in qualsiasi IBAction hai ottenuto legato a un pulsante per animarla quando è toccato.

// animate button 
    // play with the scale (1.25) to adjust to your liking 
    yourButton.transform = CGAffineTransformMakeScale(1.25, 1.25) 
    yourButton.alpha = 0.0 

    UIView.beginAnimations("yourButton", context: nil) 
    // play with the animationDuration to adjust to your liking 
    UIView.setAnimationDuration(0.25) 
    yourButton.transform = CGAffineTransformMakeScale(1.0, 1.0) 
    yourButton.alpha = 1.0