Перестала работать анимация изображения через layoutIfNeeded
Я столкнулся с проблемой, которая действительно смущает меня. Я написал простую анимацию для перемещения двух изображений, и она отлично работала. Однако внезапно это прекратилось, и я не могу понять, почему. Я не сделал никаких изменений, которые могли бы повлиять на анимацию. Я проверил, что NSLayoutConstraints действительно обновляются, и они обновляются, но это не анимируется. Любые идеи будут более чем оценены.
К сожалению, у меня нет никаких версий Git. Я немного новичок, и по крайней мере этот опыт подумал о ценности git, и я буду использовать его впредь. Я добавил ограничения в раскадровку, четыре из которых - те, на которые я пытаюсь воздействовать через код. Это ограничение y и x для двух изображений, которые я пытаюсь переместить.
Дополнительная информация У меня есть четыре предупреждения: "Ограничение ссылок на элементы отключено в текущей конфигурации. Отключите это ограничение в текущей конфигурации. Я смог сделать вывод, что ограничения, дающие предупреждения, - это четыре ограничения, которые я пытаюсь оживить. Но я все еще не уверен, как это исправить.
Дополнительное обновление, которое я переместил в анимационный код override func viewWillAppear(animated: Bool) { super.viewWillAppear(true)
, После этого я вижу анимацию, если удаляю первую self.view.layoutIfNeeded()
Однако это оживляет все взгляды. Но я не могу получить только изменения ограничения для анимации.
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view, typically from a nib.
...
self.view.layoutIfNeeded()
self.firstCallyC?.constant = 0
UIView.animateWithDuration(1.3, delay: 0.3, options: .CurveEaseInOut, animations: {
self.firstCallyC!.constant = (usePoint[0].y) - 210
self.firstCallxC?.constant = (usePoint[0].x) - 300
self.meditateyC?.constant = (usePoint[179].y) - 210
self.meditatexC?.constant = (usePoint[179].x) - 300
self.view.layoutIfNeeded()
}, completion: nil)
}
2 ответа
Я наконец нашел решение, добавив override func viewDidAppear
к классу, а затем добавить анимацию к этой функции. Я думаю, что все изображения должны быть правильно загружены и размещены, прежде чем они могут быть анимированы или что-то в этом роде?
Вы должны ограничить константы вне блока анимации
firstCallyC!.constant = (usePoint[0].y) - 210
firstCallxC?.constant = (usePoint[0].x) - 300
meditateyC?.constant = (usePoint[179].y) - 210
meditatexC?.constant = (usePoint[179].x) - 300
UIView.animateWithDuration(1.3, delay: 0.3, options: .CurveEaseInOut, animations: {
self.view.layoutIfNeeded()
}, completion: nil)