如何使 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 中。
我是 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 中。