2010-06-30 27 views
15

Ich erstelle ein Menü und ich möchte die Schaltflächen "Pop" Ich denke, auf dem Bildschirm. Grundsätzlich möchte ich bei 0px Dimensionen beginnen und dann auf die volle Größe der Schaltflächen gehen. Ich kann das Alpha und die Position animieren, wenn ich will aber die Dimensionen nicht machen kann und ich denke es ist weil es ein Bild auf dem Button ist.UIButton Größe ändern mit Animation

Wenn ich eine UIButtonTypeRoundRect tun, können Sie sehen, dass die Schaltfläche hinter dem Bild animiert wird, aber das Bild ist statisch.

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]; 

So funktioniert das Alpha aber die Größenänderung nicht. Ich habe auch mit dreachableImageWithLeftCapWidth gespielt, um zu versuchen, es Kontext oder etwas zu geben, aber ohne Erfolg.

Prost für Ihre Hilfe.

+0

Haben Sie versucht, die Schaltfläche "Scale To Fill" zu machen? – iwasrobbed

+0

yup, erinnere dich daran, das zu einem Zeitpunkt zu versuchen. Wer hat dich ausgeraubt? – Rudiger

Antwort

32

Können Sie stattdessen den folgenden Code verwenden?

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]; 

Ihr Button sollte etwas größer beginnen und dann wieder zurück schrumpfen. Wenn dies richtig skaliert wird, passen Sie einfach den Skalierungsfaktor vorher und nachher an.

+0

Danke, ich sehe nach und melde mich bei dir. – Rudiger

+0

Das hat nicht sofort funktioniert. Schaltfläche = CGAffineTransformMakeScale (1.5, 1.5); hat einen Fehler geworfen. Aber im Grunde können Sie das tun button.transform = CGAffineTransformMakeScale (1.5.1.5); und es animiert einen Maßstab Anstieg wie ich brauchte. Danke :) – Rudiger

+0

Tolles Zeug - Ich habe das Codebeispiel für jeden anderen geändert, der es verwenden möchte – davbryn

5

für Swift Aktualisiert:

Sie können dies in einfügen, was auch immer IBAction Sie auf eine Schaltfläche gebunden haben sie zu animieren, wenn es berührt wird.

// 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