CGAffineTransformInvert: singular matrix.

这个错误叫奇异矩阵,不会引起崩溃,但是会打印一堆错误提示。
引起的原因可能会是以下六种:

  1. 字体的size设置为0
[UIFont fontWithName:@"AFontName" size:0] 
  1. 你添加的view控件frame为0 例如:
UIWebView *wv = [[UIWebView alloc]init];

解决:

UIWebView *wv = [[UIWebView alloc]initwithFrame:[[UIScreen mainScreen]bounds]];
  1. UIScrollView, storyboard , autolayout 冲突,这个好像是苹果的问题,解决方法是uncheck the "use autolayout" checkbox on storyboard properties
  2. 如果你用webview 载入网页出现这样问题的话,是因为CSS 设定 display: inline-block 而造成 Transform 错误 ( 估计是苹果的bug )
    解決方法是:
    选择一:不要用「display: inline-block」( Apple 应该回答你的解决方案)。
    选择二:如果使用「display: inline-block」是为了要把 Element 排成横的,那么你可以改用「display: table-cell」,效果一样!
  3. 可能是忘记调用下面方法
[super layoutSubViews]
  1. 如果尝试设置缩放比例为零,也会报该错误
[UIView animateWithDuration:0.5 animations:^{
     CGAffineTransform newTransform =  CGAffineTransformScale(myView, 0.0, 0.0);
     [myView setTransform:newTransform];
     } completion:^(BOOL finished) {
}];

改为接近0的一个数:

CGAffineTransform newTransform =  CGAffineTransformScale(s.transform, 0.0001f, 0.00001f);

参考

http://stackoverflow.com/questions/12015785/cgaffinetransforminvert-singular-matrix
http://stackoverflow.com/questions/7471027/overriding-layoutsubviews-causes-cgaffinetransforminvert-singular-matrix-ran

你可能感兴趣的:(CGAffineTransformInvert: singular matrix.)