Ser*_*nce 7 iphone cocoa-touch ios
我遇到了以下崩溃:
CALayerInvalidGeometry CALayerInvalidGeometry
CALayer bounds contains NaN: [nan 0; nan 15.1]
Run Code Online (Sandbox Code Playgroud)
在这段代码的最后一行:
CGRect bounds = self.bounds;
bounds.size = CGSizeMake(fabsf(self.width), self.height);
self.bounds = bounds;
Run Code Online (Sandbox Code Playgroud)
其中self.width来自平移手势识别器:
CGPoint panGestureRecognizerTranslationPoint = [panGestureRecognizer translationInView:panGestureRecognizer.view.superview.superview];
CGPoint rotatedPanGestureRecognizerTranslationPoint = CGPointApplyAffineTransform(panGestureRecognizerTranslationPoint, CGAffineTransformMakeRotation(-self.angle));
self.width += rotatedPanGestureRecognizerTranslationPoint.x;
Run Code Online (Sandbox Code Playgroud)
我收到此崩溃时的一个共性是在错误消息中,它总是[nan 0; 接下来是什么.有人知道是什么原因引起的吗?
[nan 0; 南15.1]
这意味着x边界的位置和width都不是数字.这可能意味着负值,或者可能是零分类型问题.nan宽度也可能是一个非常大的宽度,不能支持(虽然这应该导致其他错误消息).
这种情况通常是应用变换的结果,或者是用于创建bounds应用边界的视图/图层的值(因为这将修改应用bounds以确定frame).
使用旋转变换时,请注意anchorPoint.
使用视图/图层变换时,请identity在更改之前将变换重置为frame.
| 归档时间: |
|
| 查看次数: |
12390 次 |
| 最近记录: |