绘制路径 - iPhone
问题描述:
我沿着动画在iPhone上的路径的对象。代码使用CAKeyframeAnimation
很有效。为了调试目的,我想在屏幕上画线。我似乎无法使用当前的CGContextRef
。无论我看到它说你需要继承UIView,然后重写drawRect方法在屏幕上绘制。有没有办法解决?如果不是,我如何将数据传递给drawRect方法,以便知道绘制的内容?绘制路径 - iPhone
编辑: 确定。我结束了UIView子类并在drawRect方法中实现了绘图。我可以得到它通过创建子类的视图(称为drawPath)另一种方法来绘制到屏幕上,设置一个实例变量,然后调用setNeedsDisplay。这又会触发使用实例变量绘制到屏幕上的drawRect方法。这是最佳做法吗?如果我想绘制20多条路径会发生什么。我不应该为所有这些创建属性。
答
在的UIView你的drawRect方法把这样
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetRGBStrokeColor(context, 1.0, 0,0 , 0.0);
CGContextSetLineWidth(context, 3.f);
CGContextBeginPath(context);
CGContextMoveToPoint(context,x1,y1);
CGContextAddLineToPoint(context, x2 , y2);
CGContextStrokePath(context);
答
如果你想使用核心图形绘制使用CALayer
。如果您不想将其继承,请将绘图委托给视图。
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self)
{
CALayer* myLayer = [CALayer new];
myLayer.delegate = self;
self.layer = myLayer;
}
}
- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx
{
// draw your path here
}
当你需要重画它时,别忘了打电话给[self.layer setNeedsDisplay];
。
一些代码,我可以使用视图控制器内的代码? – user472292
您可以在viewDidLoad方法实现它。将图层设置为视图,委托给视图控制器。 – Davyd