Я положил UIView в центр экрана с помощью Autolayout. Этот UIView представляет собой квадрат размером 15% ширины экрана. Тогда на мой контроллер я добавляю cornerRadius:Циркулярная анимация масштаба UIView восходит к квадрату иногда
override func viewDidLayoutSubviews() {
circle.layer.cornerRadius = circle.frame.size.width/2.0
}
Затем, когда пользователь нажимает на кнопку, круговое представление сворачивают с первой анимацией.
UIView.animateWithDuration(0.4, delay: 0.1, options: .CurveEaseIn, animations: {() -> Void in
self.circle.alpha = 0.0
self.circle.transform = CGAffineTransformMakeScale(0.01, 0.01)
}) { (finished) -> Void in
scaleUp()
}
private func scaleUp() {
UIView.animateWithDuration(0.5, delay: 0.0, options: .CurveEaseInOut, animations: {() -> Void in
self.circle.alpha = 1.0
self.circle.transform = CGAffineTransformIdentity
}) { (finished) -> Void in
}
}
Иногда анимация уменьшения масштаба не работает должным образом. Перед запуском cornerRadius удаляется, и мой UIView становится квадратом. Но иногда моя анимация работает хорошо, а анимация круговой шкалы в порядке.
Кроме того, масштабирование вверх анимации, кажется, работает хорошо все время.
Я не понимаю, почему анимация масштаба вниз не работает все время.
Любая идея?
Благодаря
У меня все еще такое же поведение с вызовом layoutIfNeeded() – guillaume
Хммм. Что делать, если вместо этого вы вызываете 'self.view.layoutIfNeeded()'? Я не могу воспроизвести вашу проблему. У меня есть центрированное представление, которое составляет 15% от ширины экрана. Высота равна ширине. Есть ли что-нибудь еще, что я могу сделать, чтобы это увидеть? – vacawama
Похоже, проблема частично устранена, потому что теперь у меня иногда есть квадрат в анимации scaleUp. Я попробую с новым проектом, чтобы увидеть, могу ли я воспроизвести ошибку. – guillaume