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 类,请确保您没有使用
来源:CGAffineTransformInvert - 奇异矩阵误差
为每个 webView 做:
1 | webView.scrollView.minimumZoomScale = 0.1; |
或任何其他大于零的数字。