Qualcuno può dirmi come è possibile ridimensionare un UIButton
in tocco? Il pulsante dovrebbe aumentare del 10%.Scala UIButton al tocco?
Grazie in anticipo!
Qualcuno può dirmi come è possibile ridimensionare un UIButton
in tocco? Il pulsante dovrebbe aumentare del 10%.Scala UIButton al tocco?
Grazie in anticipo!
chiamata
button.transform = CGAffineTransformMakeScale(1.1,1.1);
In tasto premuto gestore.
Oppure, se si vuole scalare con l'animazione:
[UIView beginAnimations:@"ScaleButton" context:NULL];
[UIView setAnimationDuration: 0.5f];
button.transform = CGAffineTransformMakeScale(1.1,1.1);
[UIView commitAnimations];
Per completare la risposta, il ridimensionamento tasto (e il ripristino) può essere collocato in metodi in questo modo:
// 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
}
e collegato con gli eventi del pulsante in questo modo:
[btn addTarget:self action:@selector(buttonPress:) forControlEvents:UIControlEventTouchDown];
[btn addTarget:self action:@selector(buttonRelease:) forControlEvents:UIControlEventTouchUpInside];
[btn addTarget:self action:@selector(buttonRelease:) forControlEvents:UIControlEventTouchUpOutside];
NOTA 1: L'impostazione dei valori CGAffineTransformMakeScale su 1.0 non li mantiene ai valori modificati (vale a dire, non moltiplica 1.1 per 1.0), ma piuttosto lo riporta alla scala originale dell'oggetto.
NOTA2: Non dimenticare i due punti :
nel selettore, in quanto consente il passaggio del mittente come parametro al metodo di ricezione. In questo caso, i nostri metodi ricevono un UIButton e verrebbero dichiarati come tali nell'interfaccia (file .h).
Non dimenticare "UIControlEventTouchCancel' e" UIControlEventTouchDragExit' – Tim
super.Grazie mille..Il perfetto –
Questo è quello che uso
-(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);
}];
}
Soluzione semplice, grazie, ho trovato un piccolo problema: quando l'animazione autoreverse è completa, il pulsante si ridimensiona improvvisamente da 1,5x a 1x. Può essere evitato con una leggera modifica, pubblicato il codice completo separatamente. – Thiru
codice Leggermente modificato da quello di @ ibm123 che evita improvviso problema di ridimensionamento.
- (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)
bene fresco e come posso combinare questo con un evento di tocco? – Tronic
scusa, non capisco cosa intendi esattamente ... – Vladimir
Voglio dire, come posso combinare questo codice con l'evento, quando si preme un pulsante. – Tronic