覆盖layoutSubViews:随机导致“CGAffineTransformInvert:奇异矩阵”

时间:2011-09-19 12:36:18

标签: objective-c cocoa-touch

我在layoutSubViews:覆盖UIScrollView,并且我不时地为每个我重新定位的子视图获得“CGAffineTransformInvert:singular matrix”。然而,布局看起来完全没问题。 该应用程序也不会崩溃。

有人知道是什么原因引起的吗?

4 个答案:

答案 0 :(得分:30)

我曾经有过这个错误,因为错误是在使用

时设置了大小为0的字体
[UIFont fontWithName:size:] 

表示UILabel。

答案 1 :(得分:16)

如果其他人正在努力解决这个问题(如果不是因为将标签字体大小设置为0),那么当layoutSubViews:在视图上运行时,“CGAffineTransformInvert:singular matrix”似乎会出现(例如作为UIScrollViewUILabel),其大小为(0,0)。

让我永远明白,因为如果您的容器视图(例如滚动视图)未设置为剪辑子视图,则布局仍然可以正常显示。

答案 2 :(得分:4)

当我向我的self.view添加UIWebView时,我也看到了这个问题。

违规代码是:

UIWebView *wv = [[UIWebView alloc]init];

,解决方案是:

UIWebView *wv = [[UIWebView alloc]initwithFrame:[[UIScreen mainScreen]bounds]];

或除0.0之外的任何帧大小。

答案 3 :(得分:0)

在我的应用程序中,我遇到了这个错误,因为我忘记在重写的-layoutSubViews方法中调用superClass的-layoutSubViews,

所以在被覆盖的方法

中的任何一点拨打电话[super layoutSubViews]