2010-12-10 15 views
0

Ich versuche, die Skalierung eines UIButton zu animieren, habe aber Schwierigkeiten, es zu animieren, wie ich es will.Skalieren einer UIButton vertikal nur von unten

Ich habe eine UIButton eingerichtet mit einem dehnbaren UIImage. Ich möchte, dass seine Größe auf eine bestimmte Größe skaliert wird und den Effekt hat, dass sie "wächst". Ich verwende den unten stehenden Code, animiert aber den UIButton von oben nach unten und nicht nur unten. Sehen Sie den Code hier:

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

Es ist schwer zu erklären, im Grunde mag ich die UIButton von nur einer Seite (die Unterseite) wachsen, anstatt es durch den Ausbau beiden Seiten wachsen. Irgendwelche Vorschläge?


UPDATE

Ich habe auch versucht, den Rahmen des Taste verändert und dass entweder nicht funktioniert hat. Diesmal wurde überhaupt keine Animation gesehen. Das ist mein Code:

CGRect buttonRect = CGRectMake(0, 0, 150, 22); 
UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
myButton.frame = buttonRect; 

myButton.alpha = 0.6f; 
[self.view addSubview:myButton]; 

[UIView beginAnimations:@"myButton" context:nil]; 
[UIView setAnimationDuration:0.3]; 
CGRect buttonRect2 = CGRectMake(0, 0, 150, 52); 
myButton.frame = buttonRect2; 
myButton.alpha = 1.0f; 
[UIView commitAnimations]; 

Irgendwelche Ideen, warum es überhaupt nicht animiert? Ich nehme an, es hat etwas damit zu tun, wie ich den Rahmen einstelle?

Antwort

2

Sie erhalten keine Animationen sehen, bis Sie die setFrame: Methode aufrufen ..

CGRect buttonRect = CGRectMake(0, 0, 150, 22); 
UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
myButton.frame = buttonRect; 

myButton.alpha = 0.6f; 
[self.view addSubview:myButton]; 

[UIView beginAnimations:@"myButton" context:nil]; 
[UIView setAnimationDuration:0.3]; 
CGRect buttonRect2 = CGRectMake(0, 0, 150, 52); 
[UIView commitAnimations]; 

[UIView beginAnimations:@"myButton" context:nil]; 
[UIView setAnimationDuration:0.3]; 
myButton.alpha = 1.0f; 
[myButton setFrame: buttonRect2]; 
[UIView commitAnimations]; 
+0

Sie haben Recht! Ich hatte das eigentlich gemacht aber vergessen das aber im Code. Vielen Dank! – trx25

1

Der einfachste Weg ist wahrscheinlich, eine Änderung an der frame Eigenschaft zu animieren, und die Breite und Höhe dort zu erhöhen, anstatt zu versuchen, die Komplexitäten einer Transformation basierend auf dem Mittelpunkt zu erarbeiten. Wenn Sie Transformationen in dieser Ansicht wirklich benötigen, können Sie diese nach Abschluss der Animation jederzeit transparent aktualisieren.

+0

Dank Justin, habe ich versucht, das oben (herausgegeben Frage unter UPDATE sehen) und jetzt ist es doesn überhaupt nicht beleben. Irgendwelche Vorschläge, was ich falsch mache? Danke noch einmal! – trx25

+0

Das Update wie gezeigt sieht korrekt aus. Gibt es anderswo wo du 'myButton' modifizierst? Wie sieht der Code aus, wenn Sie ihn mit dem Bild initialisieren? –

+0

Nichts besonderes, ich habe mein gestrecktes Bild eingestellt und einige Labeleigenschaften geändert. Danke für deine Hilfe Justin, ich kann das immer noch nicht herausfinden und es wird ziemlich herausfordernd! Irgendwelche anderen Ideen? – trx25

0

Ich habe meine eigene Frage beantwortet. Sie müssen layoutSubviews aufrufen. Siehe hier:

UIButton *myButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
myButton.frame = CGRectMake(0, 0, 150, 22); 

myButton.alpha = 0.6f; 
[self.view addSubview:myButton]; 
[myButton layoutSubviews]; 

[UIView beginAnimations:@"myButton" context:nil]; 
[UIView setAnimationDuration:0.3]; 
myButton.alpha = 1.0f; 
myButton.frame = CGRectMake(0, 0, 150, 52); 
[myButton layoutSubviews]; 
[UIView commitAnimations]; 
Verwandte Themen