我有一个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的设备时,这非常有效。但是,只要我从XCode 6(beta 6和beta 7)构建到iOS 8,视图就会切掉而不是动画。如果一旦我将目标比例改为(0.001,0.001),那就不够奇怪,无论XCode版本如何,它都会动画很好。关于为什么我不能用XCode 6制作实际(0.0,0.0)比例的任何想法?
答案 0 :(得分:11)
因此,在与Apple的开发人员交谈之后,我得到的理由是,一些基础框架需要经常使用变换矩阵的逆,并且由于零矩阵没有逆,因此动画只返回以避免崩溃。希望这篇文章能帮助遇到类似情况的其他人。
答案 1 :(得分:6)
如果您可以接受,请将比例值设置为0.01,如下所示:
_menuContainerView.transform = CGAffineTransformMakeScale(0.01, 0.01);