0
- (void)drawRect:(CGRect)rect
{
CGFloat red[4] = {1.0f, 0.0f, 0.0f, 1.0f};
CGContextSetStrokeColor(c, red);
CGContextBeginPath(c);
CGContextMoveToPoint(c, 150.0f, 200.0f);
CGContextSetLineWidth(c, 5.0f);
CGContextAddLineToPoint(c, 50,300);
CGContextAddLineToPoint(c, 260,300);
CGContextClosePath(c);
}

这是我的viewwillappear

-(void)viewWillAppear:(BOOL)animated
{
    [self.view setNeedsDisplay];         
}

但是,视图不能画线,只能画空白。

4

3 回答 3

1

你试过这个吗?

- (void)drawRect:(CGRect)rect
    [super drawRect:rect];

    CGContextRef context    = UIGraphicsGetCurrentContext();

    CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor);

    // Draw them with a 2.0 stroke width so they are a bit more visible.
    CGContextSetLineWidth(context, 2.0);


    CGContextMoveToPoint(context, 0,0); //start at this point

    CGContextAddLineToPoint(context, 20, 20); //draw to this point

    // and now draw the Path!
    CGContextStrokePath(context);
}
于 2012-11-22T04:08:53.607 回答
1

你可以使用这个drawRect 教程,它对于抢先一步非常有用。关于您的问题,请确保您正在绘制的 UIView 是可见的视图,也许您正在覆盖 UIView 或者此视图之上还有其他视图,因此无法看到更改。也可能你忘记在显示之前初始化视图。

于 2012-11-22T05:36:53.310 回答
1

看来您正在子类中使用该drawRect方法UIViewController。但是drawRect方法仅适用于UIView子类。

如果我是对的,请执行以下操作。否则请参阅@Anoop Vaidya 的回答。那应该有效。

子类化一个UIView,做你所有的事情drawRect并将该视图添加到你的视图控制器。

@interface myView : UIView
{

}
@end

@implementation myView

- (void)drawRect:(CGRect)rect{

}

@end

    -(void)viewWillAppear:(BOOL)animated
{
    myView *view1  = [[myView alloc]init];
    self.view =  view1;        
}
于 2012-11-22T04:24:23.787 回答