代码改变世界

storyboard视图设置问题造成的CALayerInvalidGeometry错误

2013-05-13 13:53 囧月 阅读(...) 评论(...) 编辑 收藏

今天在运行到某个ViewController的时候,发生以下错误造成程序终止:

Terminating app due to uncaught exception 'CALayerInvalidGeometry', reason: 'CALayer position contains NaN: [512 nan]

经检查,是由于storyboard中ViewController的frame设置中width、height属性被设置为0造成的。

另外,若是在程序代码中把某个View的frame的width、height属性设置为0有可能也会引起以上错误。

事情的起因是,把MainStoryboard_iPhone.storyboard里的ViewController全部复制到MainStoryboard_iPad.storyboard,XCode自动会把视图调整成iPad版大小,但是不知道什么原因,一个UIWebView的frame的width、height被设置为0了,所以在运行的时候报出了以上错误。

由此次的事情也得到一个教训,若是在两个storyboard之间复制ViewController时,一定要通过SourceCode来检查各个View的frame是否设置了正确的width、height属性,以免发生不必要的问题。