Uiview 为视图设置动画时,单击UIButton

Uiview 为视图设置动画时,单击UIButton,uiview,uibutton,ipad,nsnotificationcenter,uianimation,Uiview,Uibutton,Ipad,Nsnotificationcenter,Uianimation,我在动画方面面临一个问题 所以现在在我的应用程序中,我有一个子视图,它有一个关闭按钮。按下“关闭”按钮时,会出现向下卷曲动画,显示上一个视图。这是正常工作。我通过如下方式向NSNotificationCenter传递通知来执行向下卷曲关闭动画[[NSNotificationCenter defaultCenter]postNotificationName:notificationName对象:self] 现在我想把一个动画应用到关闭按钮本身,这样当我按下关闭按钮时,它将执行一个动画,同时也会出现

我在动画方面面临一个问题

所以现在在我的应用程序中,我有一个子视图,它有一个关闭按钮。按下“关闭”按钮时,会出现向下卷曲动画,显示上一个视图。这是正常工作。我通过如下方式向NSNotificationCenter传递通知来执行向下卷曲关闭动画
[[NSNotificationCenter defaultCenter]postNotificationName:notificationName对象:self]

现在我想把一个动画应用到关闭按钮本身,这样当我按下关闭按钮时,它将执行一个动画,同时也会出现向下卷曲的动画。因此,我这样做的方式是通过以下代码

[UIView transitionWithView:self.view.superview duration:1
                       options:UIViewAnimationOptionCurveEaseIn
                    animations:^ {
                        closeButton.frame = CGRectMake(500, 15, 100, 40); }
                    completion:nil];
其中之前closeButton.frame的值为(580,15100,40),因此动画就像图像从右向左从580移动到500

因此,当我运行代码时,当我按下close按钮时,close按钮动画不会发生,但会发生curl down动画。因此,为了测试我在发布通知时注释掉的代码,close按钮动画工作得很好,但是curl down动画不会出现,也不会出现上一个视图(因为我没有发送会导致视图关闭的通知)


我想知道这里出了什么问题,以及为什么不允许两个动画同时出现。

以下是我解决问题的方法

我使用了使用块的嵌套动画,我在close按钮动画的完成部分包含了向下卷曲关闭视图的代码

[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];
                    }];