在您之前询问此问题之前,请查看详细信息:
我有一个简单的动画,将视图的帧从它的正常大小缩小到超视图中间的零帧。在我的完成块中,我从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;
}
还有什么其他可能与我尚未考虑过的问题有关吗?我感谢所有的帮助。
答案 0 :(得分:0)
我尝试将动画持续时间更改为.5f
,并在动画块中验证contentView
不是nil。
此外,使用转换
可能更容易实现此动画animations:^{
contentView.transform = CGAffineTransformMakeScale(.1f, .1f);
}