2010-04-12 9 views
2

Je veux qu'il soit animé alors j'utilise [UIView beginAnimations]Animer mouvement et à l'échelle de l'image UIButton

J'ai essayé animant l'aide button.imageView.frame (avec l'image définie comme imageView), mais il anime seulement la position, l'image doesn pas réduit du tout. En utilisant hateButton.frame (lorsque l'image est définie comme backgroundImage), backgroundImage est réduite mais elle n'est pas animée.

Comment redimensionner une image UIButton à l'échelle de l'animation?

+0

pls mettent le code pour la même ... –

Répondre

3

je pourrais y parvenir en utilisant Quartz 2D:

// move anchor point without moving frame 
CGRect oldFrame = hateButton.frame; 
hateButton.layer.anchorPoint = CGPointMake(0, 1); // bottom left 
hateButton.frame = oldFrame; 

[UIView beginAnimations:nil context:NULL]; 
CGAffineTransform newTransform; 
newTransform = CGAffineTransformMakeScale(0.8, 0.8); 
hateButton.transform = CGAffineTransformTranslate(newTransform, 0, -160); 
[UIView commitAnimations]; 

Assurez-vous que vous importez Quartz2D aussi:

#import <QuartzCore/QuartzCore.h> 
+0

Vous pouvez appliquer la transformation directement au button.imageView en mettant à votre button.imageView.transform CGAffineTransform. – Kekoa

+0

J'ai décidé d'utiliser un UIImageView à la place et je pourrais donc utiliser le cadre animé normal. Ensuite, en haut, j'ai mis un UIButton invisible. – Jonny

5

Vous pouvez appeler layoutIfNeeded entre [UIView beginAnimations] et [UIView commintAnimations] ou avec [UIView animateWithDuration].

[UIView animateWithDuration:0.3f animations:^{ 
    self.myButton.frame = aFrame;  
    [self.myButton layoutIfNeeded]; 
}];