使用 UIBezierPath 时出错
Posted
技术标签:
【中文标题】使用 UIBezierPath 时出错【英文标题】:Having an error when using UIBezierPath 【发布时间】:2015-05-04 07:00:23 【问题描述】:我使用UIBezierPath
来画一条线。但是有一个错误
这是我的代码:
UIBezierPath *aPath = [UIBezierPath bezierPath];
[aPath moveToPoint:CGPointMake(100, 100)];
[aPath addLineToPoint:CGPointMake(200, 200)];
[aPath closePath];
aPath.lineWidth = 5;
[[UIColor redColor] setStroke];
[aPath stroke];
这是错误:
CGContextSetStrokeColorWithColor:无效的上下文 0x0。这是一个 严重错误。此应用程序或它使用的库正在使用 无效的上下文,从而导致整体退化 系统的稳定性和可靠性。此通知是一种礼貌:请 解决这个问题。这将成为即将到来的更新中的致命错误。
【问题讨论】:
***.com/questions/19599266/… 【参考方案1】:而不是
[[UIColor redColor] setStroke];
使用
CGContextSetStrokeColorWithColor(context, [[UIColor redColor] CGColor]);
你也可以这样做-
CAShapeLayer *shapeLayer = [CAShapeLayer layer];
UIBezierPath *aPath;
aPath = [UIBezierPath bezierPath];
[aPath moveToPoint:CGPointMake(0, 0)];
[aPath addLineToPoint:CGPointMake(size*2, 0)];
[aPath addLineToPoint:CGPointMake(size, size*2)];
[aPath closePath];
shapeLayer.path = aPath.CGPath;
shapeLayer.strokeColor = [[UIColor redColor] CGColor];
shapeLayer.fillColor = color;
shapeLayer.lineWidth = width;
[self addSublayer:shapeLayer];
【讨论】:
我用了你的第二种方式。有效。非常感谢 @thinhvd 省略 [aPath 填充];【参考方案2】:将这个赞添加到 setStrokeColor
CGContextSetStrokeColorWithColor(context, [[UIColor redColor] CGColor]);
【讨论】:
你用[[UIColor redColor] setStroke];
替换了吗?【参考方案3】:
试试这个:在 xcode 中将符号断点添加到 CGPostError
。 (添加符号断点,并在符号字段类型CGPostError
)
当发生错误时,调试器将停止代码执行,您可以检查方法调用堆栈并检查参数。
还要确保您已导入 QuartzCode
框架。
【讨论】:
以上是关于使用 UIBezierPath 时出错的主要内容,如果未能解决你的问题,请参考以下文章
两个 CGPaths / UIBeziers 之间的补间 / 插值