Анимация кнопки UIB при анимации просмотра - PullRequest
1 голос
/ 24 мая 2011

У меня проблема с анимацией.

Так что сейчас в моем приложении у меня есть подпредставление, в котором есть кнопка закрытия. При нажатии кнопки закрытия появляется анимация сгибания, показывающая предыдущий вид. Это работает правильно. Я выполняю анимацию закрытия, отправляя уведомление в NSNotificationCenter, например, [[NSNotificationCenter defaultCenter] postNotificationName:notificationName object:self];

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

[UIView transitionWithView:self.view.superview duration:1
                       options:UIViewAnimationOptionCurveEaseIn
                    animations:^ {
                        closeButton.frame = CGRectMake(500, 15, 100, 40); }
                    completion:nil];

Там, где ранее значение closeButton.frame имело значение (580,15,100,40), поэтому анимация была бы аналогична движению изображения справа налево с 580 до 500.

Так что, когда я запускаю код, происходит то, что когда я нажимаю кнопку закрытия, анимация кнопки закрытия не происходит, а происходит анимация сворачивания. Таким образом, для тестирования, когда я закомментировал код, в который я отправляю уведомление, анимация кнопки закрытия работает отлично, но анимация скручивания не происходит, и не появляется предыдущий вид (так как я не отправляю уведомление, которое вызовет представление для близко).

Я хотел бы знать, что здесь происходит не так и почему не допускается одновременное выполнение двух анимаций.

1 Ответ

0 голосов
/ 25 мая 2011

Вот как я это решил ...

Я использовал вложенную анимацию, используя блоки, в которые я включил код для закручивания при закрытии в завершающей части анимации кнопки закрытия ...

[UIView transitionWithView:self.view.superview duration:1
                       options:UIViewAnimationOptionCurveEaseIn
                    animations:^ {
                        popContents.closeButton.frame = CGRectMake(500, 15, 100, 40); }
                    completion:^(BOOL finished){
                        [UIView transitionWithView:self.view.superview duration:1
                                           options:UIViewAnimationOptionTransitionCurlDown
                                        animations:^ {
                                            popContents = nil;
                                            [popContents.view removeFromSuperview];
                                            [ovController.view removeFromSuperview];
                                            ovController = nil; }
                                        completion:nil];
                    }];
...