iPhone渲染问题

时间:2010-05-15 20:16:54

标签: iphone objective-c graphics rendering

我是iPhone / Objective-C开发的新手。我“跳了起来”,开始阅读并实施O'Reilly的iPhone开发中的一些章节。我正在严格遵循电子书的代码,我的代码产生了以下错误:

CGContextSetFillColorWithColor: invalid context
CGContextFillRects: invalid context
CGContextSetFillColorWithColor: invalid context
CGContextGetShouldSmoothFonts: invalid context

但是,当我下载同一章的示例代码时,代码是不同的。

图书代码:

- (void) Render {
    CGContextRef g = UIGraphicsGetCurrentContext();
    //fill background with gray
    CGContextSetFillColorWithColor(g, [UIColor grayColor].CGColor);
    CGContextFillRect(g, CGRectMake(0, 0, self.frame.size.width, self.frame.size.height));
    //draw text in black.
    CGContextSetFillColorWithColor(g, [UIColor blackColor].CGColor);
    [@"O'Reilly Rules!" drawAtPoint:CGPointMake(10.0, 20.0) withFont:[UIFont systemFontOfSize:[UIFont systemFontSize]]];
}

网站上的实际项目代码(作品):

- (void) Render {
    [self setNeedsDisplay]; //this sets up a deferred call to drawRect.
}

- (void)drawRect:(CGRect)rect {
    CGContextRef g = UIGraphicsGetCurrentContext();
    //fill background with gray
    CGContextSetFillColorWithColor(g, [UIColor grayColor].CGColor);
    CGContextFillRect(g, CGRectMake(0, 0, self.frame.size.width, self.frame.size.height));
    //draw text in black.
    CGContextSetFillColorWithColor(g, [UIColor blackColor].CGColor);
    [@"O'Reilly Rules!" drawAtPoint:CGPointMake(10.0, 20.0) withFont:[UIFont systemFontOfSize:[UIFont systemFontSize]]];
}

使这些应用程序正确渲染的代码行是什么?

- (void) Render {
    [self setNeedsDisplay]; //this sets up a deferred call to drawRect.
}

- (void)drawRect:(CGRect)rect {

提前感谢帮助新手!

1 个答案:

答案 0 :(得分:1)

当你在屏幕上绘制内容时,你需要有一个图形上下文(我确定你已经阅读了所有内容),但这只是在Cocoa调用-drawRect:时提供(或多或少),所以你的选项基本上只是在-drawRect:中调用渲染,从你想要做的事情看起来没有多大意义,或者让-render告诉系统你想要绘制你的视图,这将导致系统(最终)创建一个图形上下文并调用你的-drawRect:,其中需要实际的绘图代码。否则,将不会绘制图形上下文,我相信这是你的错误所说的。

(注意:上面的系统意味着与操作系统一样多的UIKit)