2016-04-30 2 views
6

У меня есть вид sView внутри моего ViewController. У этой высоты есть ограничение - я создал IBOutlet для этого ограничения - sViewHeightConstraint. Я хочу уменьшить высоту sView с анимацией.Анимация с высоты Swift

Я создал функцию

UIView.animateWithDuration(5.5, animations: { 
       self.sViewHeightConstraint.constant = 50 
      }) 

Высота зрения меняется, но я не вижу никакой анимации. Что я делаю неправильно?

ответ

27

использование layoutIfNeeded()

view.layoutIfNeeded() // force any pending operations to finish 

UIView.animateWithDuration(0.2, animations: {() -> Void in 
    self.sViewHeightConstraint.constant = 50 
    self.view.layoutIfNeeded() 
}) 

скор 3

view.layoutIfNeeded() 
sViewHeightConstraint.constant = 50 

UIView.animate(withDuration: 1.0, animations: { 
    self.view.layoutIfNeeded() 
}) 
+0

спасибо! можете ли вы объяснить - что означает этот код? – moonvader

+0

@moonvader 'layoutIfNeeded' в представлении заставляет все ожидающие операции завершить, а затем в блоке анимации захват кадра изменяется. –

+0

для получения дополнительной информации. проверьте http://stackoverflow.com/questions/1182945/how-is-layoutifneeded-used –