0

在自定义 UIView 子类中调用 DrawRect 时出现以下错误:

CGContextFillRects: invalid context 0x0

我的 UIView 子类“EVGameView”中的 DrawRect 方法实现如下:

- (void)drawRect:(CGRect)rect
{
    CGRect rectangle = CGRectMake(0, 100, 320, 100);
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetRGBFillColor(context, 0.0, 0.0, 0.0, 1.0);
    CGContextSetRGBStrokeColor(context, 1.0, 0.0, 0.0, 1.0);
    CGContextFillRect(context, rectangle);
}

我在我的 viewController 'viewDidLoadMethod' 中实例化了我的 EVGameView 类:

- (void)viewDidLoad
{
    srand(time(0));

    [super viewDidLoad];

    gameBoard = [[EVBoard alloc] init];
    [gameBoard initBoard:10 : 10 : mainBoard];

    gameView = [[EVGameView alloc] init];          // EVGameView instance

            .
            .
            .

}

我在以下方法中调用 drawRect 方法:

- (void)drawStartPosition
{
    CGRect rect;
    rect.origin = startPos;
    rect.size.width = 10;
    rect.size.height = 10;
    [gameView drawRect: rect];
}

似乎没有设置上下文,因为 UIGraphicsGetCurrentContext() 返回“nil”。我在 youTube 上看到过一些例子,人们有一个相同的 drawRect 方法,而且效果很好。我在 .xib 文件中设置了一个单独的视图并将其链接到我的 gameView 实例,但仍然没有运气。对此的任何帮助都非常感谢!

谢谢-

4

1 回答 1

0

你没有说你在哪里打电话drawStartPosition,但这就是问题所在。基本上,您不应该调用drawRect:自己,而是应该调用setNeedsDisplay并允许系统在它实际要求您的视图将自己绘制到提供的上下文中之前完成所有适当的设置。

于 2013-07-10T16:10:12.397 回答