2014-11-19 10 views
5

Ho questo codice per animare un vincolo di larghezza di un UITextFieldUITextField animare larghezza vincolo

self.myTextFieldWidthConstraint.constant = 200 
UIView.animateWithDuration(2, delay: 0.0, options: UIViewAnimationOptions.CurveLinear, animations: {() -> Void in 
    self.viewContainer.layoutIfNeeded() 
}, completion: nil) 

Funziona bene, l'unico problema è che se c'è testo all'interno del campo di testo, durante l'animazione si restringe in la larghezza del carattere e quindi si adatta nuovamente alla dimensione corretta. Il testo segnaposto non ha lo stesso problema.

Ecco una gif: http://makeagif.com/mr4u1D

+0

si disegna il testo usando drawRect? – Antoine

+0

Non penso che sia possibile separare l'animazione del testo dall'animazione UITextField. Controlla questa domanda per una soluzione alternativa: http://stackoverflow.com/questions/17025624/fade-uitextfield-text – Pintouch

+0

Non riesco a riprodurre questo problema, vedi http://makeagif.com/XZjc6u – Thomas

risposta

0

Fahim, è possibile impedire il ridimensionamento del testo dimettendosi il primo risponditore prima di animare il cambiamento di larghezza, ad esempio con:

[self.myTextField resignFirstResponder] 

o, più in generale:

[self.view endEditing:YES] 
0

Questo sta accadendo perché il campo è già focalizzato mentre si fa l'animazione. La mia ipotesi è che si sta facendo l'animazione in:

func textFieldDidBeginEditing(textField: UITextField) 

Ma si dovrebbe fare invece in:

func textFieldShouldBeginEditing(textField: UITextField) -> Bool