iPhone [NSString drawAtPoint:withFont:]总是绘制一个零

时间:2011-06-22 05:21:19

标签: iphone cocoa-touch

我正在从Paul Zirkle和Joe Hogue的书中学习iPhone游戏编程,除了我已经改变了一些东西。你有可能不懂那本书,所以我会向你解释我的应用程序的结构。我有一个xib,MainMenu.xib,它只有一个窗口。没有其他的xib。然后我有一个视图控制器,目前是UIView的一个子类。 (当然我的应用代表)现在应用程序应该将屏幕变为蓝色并将FPS(29)绘制为黑色。这是正在发生的事情:

http://img27.imageshack.us/img27/6918/screenshot20110621at100.png(我无法嵌入它,论坛不会让我)

哦,哦!我的控制台中的FPS说29!并且屏幕左下角有一点零。这是我目前正在绘制的UIView的代码:

#import "MainMenuState.h"

@implementation MainMenuState

- (void)drawRect:(CGRect)rect
{
    g = UIGraphicsGetCurrentContext();
    [self render];
}

- (void)updat { // yes, updat

}

- (void)render {
    //NSLog(@"render called (MainMenuState)");
    UIGraphicsPushContext(g);
    if (g == nil)
        NSLog(@"g == nil"); // Doesn't print b/c it shouldnt
    if (UIGraphicsGetCurrentContext() == nil)
        NSLog(@"UIGraphicsGetCurrentContext == nil"); // also doesnt for same reason
    // fill background with blue
    CGContextSetFillColorWithColor(g, [UIColor blueColor].CGColor);
    CGContextFillRect(g, [self bounds]);

    // Let's draw the FPS now
    int fps = [[[UIApplication sharedApplication] delegate] getFPS];
    NSLog(@"Received FPS of %d (MainMenuState)", fps);                          // prints 29
    NSString *fpsString = [NSString stringWithFormat:@"%d", fps];
    NSLog(fpsString);                                                           // prints 29
    CGContextSetFillColorWithColor(g, [UIColor blackColor].CGColor);
    [fpsString drawAtPoint:CGPointMake(30.0, 60.0) withFont:[UIFont systemFontOfSize:[UIFont systemFontSize]]];
    UIGraphicsPopContext();
}


- (void)dealloc
{
    [super dealloc];
}

@end

我在最右边放了几个笔记,我想你必须在代码视图中滚动才能看到它们。 无论如何它应该显示29而不是零。出了什么问题?

0 个答案:

没有答案