Я настроил анимацию, чтобы скрыть один переключатель / метку, когда включен другой.Одновременно только что включенный переключатель перемещается вверх.Это прекрасно работает с простым объяснением здесь .
Однако, когда я пытаюсь переместить переключатель / метку обратно после его выключения, он не сдвинется с места.Другой переключатель снова появляется нормально, но изменение верхнего ограничения не срабатывает.
Я относительно новичок в настройке этого типа и анимации всего программно, и, потратив час на это, я озадачен.Это потому, что я анимирую верхнее ограничение относительно другого?Какое это имеет значение, если это работает с первого раза?Даже если альфа скрытого переключателя установлена в ноль, его кадр все еще там, верно?Или я что-то просто тупо делаю?
// Works Perfectly!
func hideVeg() {
self.view.layoutIfNeeded()
UIView.animate(withDuration: 1, delay: 0, options: [.curveEaseIn], animations: {
self.vegetarianSwitch.alpha = 0
self.vegetarianLabel.alpha = 0
self.veganSwitch.topAnchor.constraint(equalTo: self.vegetarianSwitch.bottomAnchor, constant: -30).isActive = true
self.view.layoutIfNeeded()
})
}
// Showing the label and switch works, but the topAnchor constraint never changes!
func showVeg() {
self.view.layoutIfNeeded()
UIView.animate(withDuration: 1, delay: 0, options: [.curveEaseIn], animations: {
self.vegetarianSwitch.alpha = 1
self.vegetarianLabel.alpha = 1
// This is the constraint that doesn't change.
// This is exactly what it was set to before the other hideVeg() runs.
self.veganSwitch.topAnchor.constraint(equalTo: self.vegetarianSwitch.bottomAnchor, constant: 40).isActive = true
self.view.layoutIfNeeded()
})
}