在视图中绘制线条:不绘图

时间:2010-08-28 07:01:33

标签: iphone uiview drawing cgcontext

我想画一条线

我的代码就是这个

-(void) drawRect:(CGRect) rect
{
    NSLog(@"Reached Draw ARect Function");

    CGContextRef ctx = UIGraphicsGetCurrentContext(); 
    CGContextSetLineWidth(ctx, 2.0);
    CGContextSetRGBStrokeColor(ctx, 1.0, 2.0, 0, 1); 
    CGContextMoveToPoint(ctx, 0, 0);
    CGContextAddLineToPoint( ctx, 100,100);

    CGContextStrokePath(ctx);

}

我从viewDidLoad调用如下

- (void)viewDidLoad {

    [super viewDidLoad];
    CGRect k = CGRectMake(1.0, 1.0, 100.0, 200.0);
    [self.view drawRect:k];

}

任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:3)

您应该将UIView子类化并将您的线条图代码移动到drawRect:方法,就像您正在做的那样(只是希望它是UIView子类而不是UIViewController)

- (void)drawRect:(CGRect)rect {

   [super drawRect:rect];

   // Place your code here

}

您还必须确保在InterfaceBuilder中使用UIView子类作为您将要绘制的视图。您不必自己调用此方法。如果你想动画一些东西,你应该调用[view setNeedsDisplay];来请求重绘视图。



......和......你应该在致电CGContextBeginPath(ctx);

之前添加CGContextMoveToPoint

答案 1 :(得分:0)

您无法直接调用drawRect。

相反,你在你的UIView上调用setNeedsDisplay,返回,并等待操作系统稍后用适当的上下文调用UIView的drawRect。

答案 2 :(得分:0)

如果需要致电

- (void)drawRect:(CGRect)rect
用户拖动特定视图时动态

方法,只需放置以下代码:

[self.view setNeedsDisplay];

然后

- (void)drawRect:(CGRect)rect

方法将自动被调用