2009-07-13 7 views
1

J'essaie de faire un UIButton qui se développe lorsqu'il est pressé. Actuellement, j'ai le code suivant dans l'événement vers le bas de mon bouton (avec la permission de Tim's answer):UIButton se déplace lorsqu'il est pressé

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

Cependant quand exécuter ce fait mon bouton et déplacer vers la gauche à chaque fois qu'il est pressé. Des idées?

Répondre

4

Vous pouvez utiliser CGRectInset:

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

Cela a fonctionné! Merci! – RCIX

+0

ses remerciements utiles de mon côté aussi .... voté .... – Saawan

1

Vous avez besoin de parenthèses ici. Rappelez-vous que la division se produit avant l'addition/soustraction.

De plus, les deux premiers paramètres de CGRectMake dictent où sur l'écran le bouton est, et les deux autres indiquent la taille. Donc, si vous voulez juste changer la taille du bouton, ne définissez que les deux derniers paramètres.

#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; 
Questions connexes