8

我试图在视图上执行此动画,将其缩放到 (0,0),然后使用 CGRectMake 方法移动此帧并将其缩放回 (1,1)。所以我使用下面的代码来做到这一点

-(void)startWalkAnimationStartWalkingBtnViewScaleToZero{
    CGAffineTransform transform = StartWalkBtnView.transform;

    StartWalkBtnView.transform=CGAffineTransformScale(transform,1.0f, 1.0f);
    [UIView animateWithDuration: 0.7
                          delay: 0.6
                        options: (UIViewAnimationOptionCurveLinear | UIViewAnimationOptionAllowUserInteraction)
                     animations:^{ StartWalkBtnView.transform = CGAffineTransformScale(transform, 0.0f, 0.0f);
                     }
                     completion:^(BOOL finished){
                         [UIView animateWithDuration:0.0
                                               delay:0.0
                                             options: UIViewAnimationOptionCurveEaseIn
                                          animations:^{
                                              StartWalkBtnView.frame=CGRectMake(92, 270, 120, 121);
                                          }
                                          completion:^(BOOL finished){

                                              StartWalkBtnView.transform=CGAffineTransformScale(transform,0.0f, 0.0f);
                                              [UIView animateWithDuration: 0.7
                                                                    delay: 0.8
                                                                  options: (UIViewAnimationOptionCurveLinear | UIViewAnimationOptionAllowUserInteraction)
                                                               animations:^{ StartWalkBtnView.transform = CGAffineTransformScale(transform, 1.0f, 1.0f);
                                                               }
                                                               completion:^(BOOL finished){}
                                               ];
                                          }];
                     }
     ];
}

但是在尝试运行此动画后,我在控制台中收到以下错误。

Jun 17 12:02:49 Kareem.local MyAppName[3157] <Error>: CGAffineTransformInvert: singular matrix.

我在谷歌上搜索了太多,并尝试了提供的所有解决方案(Scale Near to zere Value,...)但没有任何效果,有没有人有解决这个问题的想法。感谢帮助

更新: 我发现以下行中的问题:

StartWalkBtnView.frame=CGRectMake(92, 270, 120, 121);

但实际上我不知道如何解决这个问题,但是当我删除这条线时它缩放到零然后从零正常返回,没有任何错误

4

2 回答 2

17

您会收到此错误,因为您的缩放矩阵的行列式为零。当您尝试将变换更改为比例 1.0 时,Core Graphics 会尝试找到先前变换的逆矩阵以将变换返回到单位矩阵。对于行列式 0,这会导致一个不可逆矩阵,这就是您收到此错误的原因。不要将比例转换为 0.0。

您确定在现在设置为 0.0的两个比例中检查了接近零的值吗?

编辑(答案):

  • 因此,根据Raj的评论,为了避免此错误,您必须尝试一个不等于零的值(但非常接近零)。

也就是说,而不是:

(transform,0.0f, 0.0f);

尝试:

(transform,0.01f, 0.01f);

或者

(transform,0.001f, 0.001f);
于 2013-06-17T12:59:29.710 回答
8

网页的内容可能是导致此错误的原因,而不是您的 iOS 应用程序编程。

我发现该错误仅在Yahoo上发生在我的应用程序中。Google.com,没问题。Reuters.com,没问题。SeattleTimes.com没问题。回到Yahoo.com问题。尤其是在滚动时,错误可能会在一瞬间出现几次。

更多细节在我的博客上

于 2013-08-21T07:21:24.253 回答