Quelqu'un peut-il me dire comment je peux mettre à l'échelle un UIButton
au toucher? Le bouton devrait augmenter d'environ 10%.UIButton échelle sur le toucher?
Merci d'avance!
Quelqu'un peut-il me dire comment je peux mettre à l'échelle un UIButton
au toucher? Le bouton devrait augmenter d'environ 10%.UIButton échelle sur le toucher?
Merci d'avance!
Appel
button.transform = CGAffineTransformMakeScale(1.1,1.1);
Dans le bouton pressé gestionnaire.
Ou si vous voulez à l'échelle avec l'animation:
[UIView beginAnimations:@"ScaleButton" context:NULL];
[UIView setAnimationDuration: 0.5f];
button.transform = CGAffineTransformMakeScale(1.1,1.1);
[UIView commitAnimations];
Pour compléter la réponse, la mise à l'échelle du bouton (et remise à zéro) peuvent être placés dans des méthodes comme ceci:
// Scale up on button press
- (void) buttonPress:(UIButton*)button {
button.transform = CGAffineTransformMakeScale(1.1, 1.1);
// Do something else
}
// Scale down on button release
- (void) buttonRelease:(UIButton*)button {
button.transform = CGAffineTransformMakeScale(1.0, 1.0);
// Do something else
}
et connecté les événements de la touche comme ceci:
[btn addTarget:self action:@selector(buttonPress:) forControlEvents:UIControlEventTouchDown];
[btn addTarget:self action:@selector(buttonRelease:) forControlEvents:UIControlEventTouchUpInside];
[btn addTarget:self action:@selector(buttonRelease:) forControlEvents:UIControlEventTouchUpOutside];
Note1: La définition des valeurs CGAffineTransformMakeScale sur 1.0 ne les conserve pas à leurs valeurs modifiées (c'est-à-dire qu'il ne multiplie pas 1.1 par 1.0), mais les restitue à l'échelle d'origine de l'objet. N'oubliez pas les deux points :
dans le sélecteur, car cela permet le passage de l'expéditeur en tant que paramètre à la méthode de réception. Dans ce cas, nos méthodes reçoivent un UIButton et sont déclarées comme telles dans l'interface (fichier .h).
N'oubliez pas 'UIControlEventTouchCancel' et' UIControlEventTouchDragExit' – Tim
super.Merci beaucoup..Son parfait –
C'est ce que j'utilise
-(IBAction)heartButtonTapped:(UIButton*)sender {
[sender setSelected:!sender.isSelected];
[UIView animateWithDuration:0.6 delay:0.0 options:UIViewAnimationOptionAutoreverse animations:^{
sender.transform = CGAffineTransformMakeScale(1.5,1.5);
} completion:^(BOOL finished) {
sender.transform = CGAffineTransformMakeScale(1,1);
}];
}
Solution simple, merci, a trouvé un petit problème: Lorsque l'animation autoreverse est terminée, le bouton redimensionne soudainement de 1.5x à 1x. Peut être évité avec une légère modification, a affiché le code complet séparément. – Thiru
code modifié légèrement de celui de @ ibm123 qui évite question de modification de taille soudaine.
- (IBAction) buttonTapAction:(UIButton *) sender {
[self animatePressedDown:sender duration:0.6 zoom:1.5];
}
- (void)animatePressedDown:(UIButton *) sender duration:(double) t zoom:(double) zoomX {
[UIView animateWithDuration:t delay:0.0 options:UIViewAnimationOptionCurveEaseOut animations:^{
sender.transform = CGAffineTransformMakeScale(zoomX,zoomX);
} completion:^(BOOL finished) {
[UIView animateWithDuration:t delay:0.0 options:UIViewAnimationOptionCurveEaseOut animations:^{
sender.transform = CGAffineTransformMakeScale(1,1);
} completion:nil];
}];
}
Swift:
button.transform = CGAffineTransform.init(scaleX: 1.0, y: 1.0)
cool et comment puis-je combiner bien cela avec un événement tactile? – Tronic
désolé, ne comprends pas ce que vous voulez dire exactement ... – Vladimir
je veux dire, comment je peux combiner ce code avec l'événement, en appuyant sur un bouton. – Tronic