2014-11-19 36 views
5

Mam ten kod do animowania ograniczenie szerokości UITextFieldUITextField animować szerokość ograniczenie

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

To działa dobrze, jedynym problemem jest to, że jeśli istnieje tekst wewnątrz pola tekstowego, podczas animacji kurczy się szerokość znaków, a następnie ponownie dostosuj do właściwego rozmiaru. Tekst zastępczy nie ma tego samego problemu.

Oto gif: http://makeagif.com/mr4u1D

+0

Czy można narysować tekst za pomocą drawRect? – Antoine

+0

Nie sądzę, że można oddzielić animację tekstu od animacji UITextField. Sprawdź to pytanie, aby obejść następujące obejście: http://stackoverflow.com/questions/17025624/fade-uitextfield-text – Pintouch

+0

Nie mogę odtworzyć tego problemu, zobacz http://makeagif.com/XZjc6u – Thomas

Odpowiedz

0

Fahim, można zapobiec skalowanie tekstu przez rezygnację pierwszego responder przed animowanie zmiany szerokości, na przykład z:

[self.myTextField resignFirstResponder] 

lub, bardziej ogólnie:

[self.view endEditing:YES] 
0

Dzieje się tak, ponieważ pole jest już skupione podczas wykonywania animacji. Moje założenie jest, że robisz animacji w:

func textFieldDidBeginEditing(textField: UITextField) 

Ale trzeba to zrobić zamiast w:

func textFieldShouldBeginEditing(textField: UITextField) -> Bool