我添加了这个方法来检查 aCGPoint
是否在 aUIBezierPath
- (BOOL)isPointInPath:(CGPoint)point inShape:(BOOL)inShape {
CGContextRef context = UIGraphicsGetCurrentContext();
CGPathRef cgPath = path.CGPath;
CGPathDrawingMode mode = kCGPathStroke;
if (inShape) mode = kCGPathFill;
CGContextSaveGState(context);
CGContextAddPath(context, cgPath);
bool isHit = CGContextPathContainsPoint(context, point, mode);
CGContextRestoreGState(context);
return isHit;
}
path
是UIBezierPath
在头文件中声明的。
当我在方法之外调用此方法时,drawRect:
我收到以下 4 条错误消息:
CGContextSaveGState: invalid context 0x0
CGContextAddPath: invalid context 0x0
CGContextPathContainsPoint: invalid context 0x0
CGContextRestoreGState: invalid context 0x0
但是当我drawRect:
在绘图内部和之后调用它时,它可以工作。
为什么它在外面不起作用drawRect:
?对我来说完全是无稽之谈。