CGAffineTransformMakeScale动画无法正常工作

sfe*_*ein 12 iphone xcode animation objective-c ios

我有一个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];
                 }];
Run Code Online (Sandbox Code Playgroud)

当从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)比例的任何想法?

sfe*_*ein 11

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


gup*_*ron 6

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

_menuContainerView.transform = CGAffineTransformMakeScale(0.01, 0.01);

参考