2009-07-13 13 views
1

Ich versuche, eine UIButton, die wächst, wenn gedrückt wird. Zur Zeit habe ich den folgenden Code in meiner Schaltfläche unten Ereignis (mit freundlicher Genehmigung von Tim's answer):UIButton bewegt sich, wenn gedrückt

#define button_grow_amount 1.2 
CGRect currentFrame = button.frame; 
CGRect newFrame = CGRectMake(currentFrame.origin.x - currentFrame.size.width/button_grow_amount, 
           currentFrame.origin.y - currentFrame.size.height/button_grow_amount, 
           currentFrame.size.width * button_grow_amount, 
           currentFrame.size.height * button_grow_amount); 
button.frame = newFrame; 

jedoch bei der Ausführung das macht meine Taste nach oben und die jedes Mal nach links gedrückt wird. Irgendwelche Ideen?

Antwort

4

können Sie CGRectInset verwenden:

CGFloat dx = currentFrame.size.width * (button_grow_amount - 1); 
CGFloat dy = currentFrame.size.height * (button_grow_amount - 1); 
newFrame = CGRectInset(currentFrame, -dx, -dy); 
+0

Das funktionierte! Vielen Dank! – RCIX

+0

sein hilfreicher Dank von meiner Seite auch .... abgestimmt .... – Saawan

1

Sie brauchen einige Klammern drin ich wette. Denken Sie daran, dass die Division vor der Addition/Subtraktion stattfindet.

Auch die ersten beiden Parameter von CGRectMake diktieren, wo auf dem Bildschirm die Schaltfläche ist, und die zweiten beiden geben die Größe an. Wenn Sie also nur die Größe der Schaltfläche ändern möchten, legen Sie nur die letzten beiden Parameter fest.

#define button_grow_amount 1.2 
CGRect currentFrame = button.frame; 
CGRect newFrame = CGRectMake((currentFrame.origin.x - currentFrame.size.width)/button_grow_amount, 
          (currentFrame.origin.y - currentFrame.size.height)/button_grow_amount, 
          currentFrame.size.width * button_grow_amount, 
          currentFrame.size.height * button_grow_amount); 

button.frame = newFrame; 
Verwandte Themen