Objective-C- animateWithDuration完成块名为early

时间:2014-11-07 01:36:44

标签: objective-c ios8

在您之前询问此问题之前,请查看详细信息:

我有一个简单的动画,将视图的帧从它的正常大小缩小到超视图中间的零帧。在我的完成块中,我从superview中删除superview并从父视图控制器中删除视图控制器。立即调用完成块。此外,完成块的BOOL参数finished等于YES。因此,当我检查动画是否完成时,它表示即使它不是,并且视图过早被删除。这是我的代码:

- (void)closeWindow {

    [UIView animateWithDuration:0.5
                 animations:^{
                     contentView.frame = [self getSchoolSetUpStartingFrame];

                 } completion:^(BOOL finished){

                     if(finished) {
                         [self.view removeFromSuperview];
                         [self removeFromParentViewController];
                     }

                 }];
 }


- (CGRect)getSchoolSetUpStartingFrame {
    CGRect startingFrame;
    CGRect myFrame = self.view.frame;

    float xPos = (myFrame.origin.x + (myFrame.size.width/2));
    float yPos = (myFrame.origin.y + (myFrame.size.height/2));

    startingFrame = CGRectMake(xPos, yPos, 0, 0);

    return startingFrame;
}

还有什么其他可能与我尚未考虑过的问题有关吗?我感谢所有的帮助。

1 个答案:

答案 0 :(得分:0)

我尝试将动画持续时间更改为.5f,并在动画块中验证contentView不是nil。

此外,使用转换

可能更容易实现此动画
animations:^{
                 contentView.transform = CGAffineTransformMakeScale(.1f, .1f);

             }