Не работает анимация CGAffineTransformMakeScale
У меня есть viewcontroller с представлением, которое я отклоняю, используя анимацию UIView, чтобы уменьшить ее до 0 до ее удаления. Мой код для его увольнения:
[UIView animateWithDuration:_dismissAnimationDuration
delay:0.0
options:UIViewAnimationOptionCurveEaseIn
animations:^(void) {
_menuContainerView.transform = CGAffineTransformMakeScale(0.0, 0.0);
}
completion:^(BOOL finished){
if ([_delegate respondsToSelector:@selector(popUpMenuDidClose)])
{
[_delegate popUpMenuDidClose];
}
[self.view removeFromSuperview];
[self removeFromParentViewController];
}];
Это прекрасно работает при построении с XCode 5 на устройствах, работающих как на iOS 7, так и на iOS 8. Но, как только я создаю iOS 8 из XCode 6 (бета-версия 6 и бета-версия 7), просмотр просто отключается, а не анимируется. Если бы это было не так странно, как только я изменил целевую шкалу на (0.001, 0.001), она анимируется отлично, независимо от версии XCode. Любые идеи относительно того, почему я не могу оживить реальную шкалу (0.0, 0.0) с помощью XCode 6?
Ответы
Ответ 1
Итак, после разговора с разработчиком в Apple рассуждения, которые я получил, заключались в том, что некоторым базовым фреймворкам достаточно часто приходится работать с обратными преобразованиями матриц преобразования, и поскольку для нулевой матрицы нет обратного, анимация просто возвращается, чтобы избежать сбой. Надеюсь, этот пост помог другим, столкнувшимся с аналогичной ситуацией.
Ответ 2
Если это приемлемо для вас, установите для значений шкалы значение 0,01 следующим образом:
_menuContainerView.transform = CGAffineTransformMakeScale(0.01, 0.01);
Ссылка