【发布时间】:2012-08-18 04:13:55
【问题描述】:
我偶尔会看到错误消息:
CGAffineTransformInvert: singular matrix
在 Xcode 的日志记录区。当我在 UIWebView 中调整网站大小时,这似乎会发生(很少发生,幸运的是)。 [商业网站,不是我自己的。] 由于我在我的应用程序中没有进行仿射转换,我想知道这是否可能是 UIWebView 的错误/功能。如果是这样,我可以忽略它吗,因为它似乎没有干扰任何东西?
【问题讨论】:
我偶尔会看到错误消息:
CGAffineTransformInvert: singular matrix
在 Xcode 的日志记录区。当我在 UIWebView 中调整网站大小时,这似乎会发生(很少发生,幸运的是)。 [商业网站,不是我自己的。] 由于我在我的应用程序中没有进行仿射转换,我想知道这是否可能是 UIWebView 的错误/功能。如果是这样,我可以忽略它吗,因为它似乎没有干扰任何东西?
【问题讨论】:
通过查看其他帖子,如果您尝试将缩放比例设置为零,您似乎会收到此消息。当您捏合并查看缩放值是否为零(并且与仿射变换错误同时发生)时,对 NSLog 缩放值很有用。
【讨论】:
然后尝试使用接近零的实数:
#define kNearZeroValue 0.001f
【讨论】:
这是affine transformations 在代码中某处转换矩阵时的问题。
所以基本上代码试图转换一个无效的singular matrix(行列式为0)。所以你应该避免像这样的矩阵:
0 0 0
0 0 0
0 0 1
通过检查它是否是基于其determinant 的奇异 3x3 矩阵来进行类似的操作。对行列式为零的矩阵执行运算(类似于除以零)被认为是违反数学的。
如果您使用uiscrollview 类,请确保您没有使用setZoomScale:animated: 方法或zoomScale 属性将实例缩放到0,因此请检查您的滚动视图(设置您的zoomScale、@987654330 @ 和 maximumZoomScale 至少设置为 0.1)。
【讨论】:
为每个 webView 做:
webView.scrollView.minimumZoomScale = 0.1;
或任何其他大于零的数字。
【讨论】: