如何使 CGContextDrawPath 在嵌套子视图上绘制?

How to make CGContextDrawPath draw on a nested subview?

我是 Apple iOS 编程中 context 概念的新手。目前,我正在考虑 views。我想用最简单的方法画一个圆弧,然后我找到了这个question and answer。但是后来我对上下文概念感到困惑。我想画点东西,我需要调用绘图函数并提供 view 我希望绘图函数绘制的位置。但是在那里,我对 UIGraphicsGetCurrentContext() 感到困惑。那是什么"current context"?是 UIScreen.mainScreen() 吗?如果我想将 "current context" 设置为 UICollectionViewCell 内的视图,那么所有绘制的像素都将相对于视图?我可以这样做吗?

在 CocoaTouch 中绘制的方式是继承 UIView 以创建自定义视图并实现 drawRect:(CGRect)rect 方法。把你的绘图代码放在 drawRect 里面。类似于:

-(void)drawRect:(CGRect)rect {
   CGContextRef context = UIGraphicsGetCurrentContext();
   CGPathRef path = CGPathCreateWithRect(rect, NULL);
   [[UIColor blueColor] setStroke];
   CGContextSetLineWidth(context, 4.0);
   CGContextAddPath(context, path);
   CGContextDrawPath(context, kCGPathFillStroke);
   CGPathRelease(path);
 }

如果需要,您可以将自定义 UIView 放在 UICollectionViewCell 中。