CGAffineTransformMakeScale动画无法正常工作

时间:2014-09-03 20:37:01

标签: ios objective-c iphone xcode animation

我有一个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)比例的任何想法?

2 个答案:

答案 0 :(得分:11)

因此,在与Apple的开发人员交谈之后,我得到的理由是,一些基础框架需要经常使用变换矩阵的逆,并且由于零矩阵没有逆,因此动画只返回以避免崩溃。希望这篇文章能帮助遇到类似情况的其他人。

答案 1 :(得分:6)

如果您可以接受,请将比例值设置为0.01,如下所示:

_menuContainerView.transform = CGAffineTransformMakeScale(0.01, 0.01);

Reference