2011-08-26 107 views
1

我沿着动画在iPhone上的路径的对象。代码使用CAKeyframeAnimation很有效。为了调试目的,我想在屏幕上画线。我似乎无法使用当前的CGContextRef。无论我看到它说你需要继承UIView,然后重写drawRect方法在屏幕上绘制。有没有办法解决?如果不是,我如何将数据传递给drawRect方法,以便知道绘制的内容?绘制路径 - iPhone

编辑: 确定。我结束了UIView子类并在drawRect方法中实现了绘图。我可以得到它通过创建子类的视图(称为drawPath)另一种方法来绘制到屏幕上,设置一个实例变量,然后调用setNeedsDisplay。这又会触发使用实例变量绘制到屏幕上的drawRect方法。这是最佳做法吗?如果我想绘制20多条路径会发生什么。我不应该为所有这些创建属性。

回答

6

在的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); 
0

如果你想使用核心图形绘制使用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];

+0

一些代码,我可以使用视图控制器内的代码? – user472292

+0

您可以在viewDidLoad方法实现它。将图层设置为视图,委托给视图控制器。 – Davyd