Подтвердить что ты не робот

Не работает анимация 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?

4b9b3361

Ответ 1

Итак, после разговора с разработчиком в Apple рассуждения, которые я получил, заключались в том, что некоторым базовым фреймворкам достаточно часто приходится работать с обратными преобразованиями матриц преобразования, и поскольку для нулевой матрицы нет обратного, анимация просто возвращается, чтобы избежать сбой. Надеюсь, этот пост помог другим, столкнувшимся с аналогичной ситуацией.

Ответ 2

Если это приемлемо для вас, установите для значений шкалы значение 0,01 следующим образом:

_menuContainerView.transform = CGAffineTransformMakeScale(0.01, 0.01);

Ссылка