我遇到以下崩溃:
CALayerInvalidGeometry CALayerInvalidGeometry
CALayer bounds contains NaN: [nan 0; nan 15.1]
这段代码的最后一行:
CGRect bounds = self.bounds;
bounds.size = CGSizeMake(fabsf(self.width), self.height);
self.bounds = bounds;
其中 self.width 源自平移手势识别器:
CGPoint panGestureRecognizerTranslationPoint = [panGestureRecognizer translationInView:panGestureRecognizer.view.superview.superview];
CGPoint rotatedPanGestureRecognizerTranslationPoint = CGPointApplyAffineTransform(panGestureRecognizerTranslationPoint, CGAffineTransformMakeRotation(-self.angle));
self.width += rotatedPanGestureRecognizerTranslationPoint.x;
当我遇到此崩溃时,一个共同点是错误消息,它始终是 [nan 0;接下来是某事。有谁知道这可能是什么原因造成的?
[南0;南15.1]
这意味着x
边界的位置和width
两者都不是数字。这可能意味着负值,或者可能是除以零类型的问题。nan
宽度也可能是无法支持的非常大的宽度(尽管这会导致其他错误消息)。
这种事情通常是应用变换的结果,或者应用于用于创建bounds
或应用了边界的视图/图层(因为这将修改应用的边界)bounds
以确定frame
).
使用旋转变换时,请小心anchorPoint
.
当使用视图/图层变换时,将变换重置为identity
在进行更改之前frame
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)