3

Я пытался анимировать изменение в UIEdgeInsets. Я уже пробовал использовать UIView.animateWithDuration, и вставки просто переходят к конечным значениям. Кто-нибудь знает, если это свойство, которое нельзя анимировать? Или еще лучше, кто-нибудь знает о способе оживить вставки?Можно ли оживить UIEdgeInsets?

В качестве примера:

// Starting inset values 
self.searchField.placeHolderInset = UIEdgeInsets(top: 0, left: 110, bottom: 0, right: 10) 

// Animation block 
UIView.animateWithDuration(0.1, animations: { 
     self.searchField.placeHolderInset = UIEdgeInsets(top: 0, left: 18, bottom: 0, right: 10) 
}) 

Вместо того чтобы перемещать 92 точек влево более 0,1 секунд, текст переходит к конечному значению. searchField - это UITextField, а .placeHolderInset - это идентификатор UIEdgeInset, используемый для определения вставки для текста заполнителя UITextField.

EDIT: Другой способ достичь желаемого эффекта путем изменения UITextField «s .textAlignment из .Center в .Left, но это не будет анимировать либо.

+0

0 попытался добавить больше значения в продолжительность анимации? ... предположим 0.4 – Vizllx

+1

Попробуйте вызвать 'self.searchField.layoutIfNeeded()' внутри блока анимации. Это помогает? –

+0

@robmayoff, ты, мой хороший сэр, блестящий. Это сделал трюк. Хотите отправить сообщение, так что я могу принять его? –

ответ

4

Вы должны позвонить layoutIfNeeded() на вид внутри блока анимации.

Смежные вопросы