如何将UIImages“绘制”到视图中?

时间:2011-05-14 06:30:04

标签: iphone objective-c cocoa-touch uiimage

我正在制作一个简单的游戏,但我需要它每秒画二十次图像。我打算使用多个UIImageViews,但我很快就意识到它不会起作用。那么,如何绘制图像,然后在更新计时器触发时“擦除”它们?我尝试使用以下代码,但没有显示任何内容。

- (void) update:(NSTimer*) timer {
    UIimage *someImage;
    someImage = [UIImage imageNamed:@"car.png"];
    [someImage drawAtPoint:thePoint];
}

我试图让thePoint既是NSPoint又是CGRect,但没有出现。现在我该怎么做?注意:thePoint在我的.h文件中声明。它目前是一个NSPoint,我认为它正在被正确使用。

2 个答案:

答案 0 :(得分:2)

这真的是你的代码吗?这几乎没有任何意义。你已经创建了一个局部变量someImage,没有创建一个指向它的对象,然后尝试在这个非对象上调用一个方法尝试使用(UIImage没有setImage:)。它几乎可以保证崩溃,如果它不立即崩溃,那么它很可能会导致一个因为它破坏了内存 - 在堆栈上创建的变量就像这样没有被初始化为0(nil如果它是一个ivar,并试图向一些随机地址发送消息是一个坏主意。为什么要尝试将CGRect传递给一个甚至在名称中 的方法?最后,您希望在哪里绘制?您需要绘图上下文(通常由视图提供,在标题中提及,但不是问题)以进行绘图。

如果没有其他内容,请查看“绘图指南”的"Images"章节。

答案 1 :(得分:1)

NSPoint适用于Mac,CGRect是一个矩形,而不是一个点。您要找的是CGPoint。尝试这样的事情:

-(void)update:(NSTimer*) timer {
    CGPoint thePoint = CGPointMake(0, 0);
    UIImage *someImage = [UIImage imageNamed:@"car.png"];
    [someImage drawAtPoint:thePoint];
}