关于ios:CGAffineTransform Inverse:奇异矩阵

CGAffineTransformInvert: singular matrix

我偶尔会看到错误消息:

1
CGAffineTransformInvert: singular matrix

在 Xcode 的日志记录区。当我在 UIWebView 中调整网站大小时,这似乎会发生(很少发生,幸运的是)。 [商业网站,不是我自己的。] 由于我在我的应用程序中没有进行仿射变换,我想知道这是否可能是 UIWebView 的错误/功能。如果是这样,我可以忽略它吗,因为它似乎没有干扰任何东西?


通过查看其他帖子,如果您尝试将缩放比例设置为零,您似乎会收到此消息。当您捏合并查看缩放值是否为零(并与仿射变换错误同时发生)时,对 NSLog 缩放值很有用。


然后尝试使用接近零的实数:

1
#define kNearZeroValue 0.001f

这是在代码中某处变换矩阵时仿射变换的问题。

所以基本上代码是在尝试转换一个无效的奇异矩阵(行列式为 0)。因此,您应该避免使用以下矩阵:

1
2
3
0 0 0
0 0 0
0 0 1

和类似的方法是根据行列式检查它是否是奇异的 3x3 矩阵。对行列式为零的矩阵执行运算(类似于除以零)被认为是违反数学的。

如果您使用的是 uiscrollview 类,请确保您没有使用 setZoomScale:animated: 方法或 zoomScale 属性将实例缩放到 0,因此请检查您的滚动视图(设置您的 zoomScaleminimumZoomScalemaximumZoomScale 至少设置为 0.1)。

来源:CGAffineTransformInvert - 奇异矩阵误差


为每个 webView 做:

1
webView.scrollView.minimumZoomScale = 0.1;

或任何其他大于零的数字。