UIView绘图问题
问题描述:
我有这个大问题,我不知道如何解决。我有一个UIView,我想绘制一个滚动背景。我使用NSTimer每秒更新30帧,但似乎每8秒重新绘制一帧。我正在调用[self setNeedsDisplay],但它没有效果。我不知道为什么会发生这种情况,有没有人有任何提示?UIView绘图问题
谢谢你的时间。
我有一个NSTimer在我的applicationDidFinishLaunching方法
timer = [NSTimer scheduledTimerWithTimeInterval:0.0
target:self
selector:@selector(gameLoop:)
userInfo:nil
repeats:YES];
IT的消息传递这个方法:
-(void) gameLoop: (id) sender
{
[myView updateAll];
[myView setNeedsDisplay];
}
MyView的是一个UIView。 UpdateAll更新我的绘图代码。它工作正常,问题似乎是drawRect方法很少执行。我需要知道如何让它每秒执行30帧。我不断看到人们说,你所要做的就是我上面所说的,但setNeedsDisplay每8秒钟只能被调用一次。
感谢您的帮助...
答
事实证明,我的代码只是非常低效,导致速度慢而不是计时器。如果您遇到类似问题,请确保在假定它未执行之前,使用一些简单的绘图(例如,将“每秒帧数”绘制到屏幕上)测试drawRect。感谢您的观看。
答
请勿使用NSTimer。
因为一个典型的运行循环管理的各种输入源,用于定时器的时间间隔的有效分辨率被限制为50-100毫秒的数量级上。
我不是iPhone的专家,但您可能需要在平台上查看动画以实现您想要的更新间隔。
答
重新绘制视图是一个昂贵的操作,这会大大降低性能。如果可以,可以使用[UIView beginAnimation...
或使用CAAnimation
s将背景作为图像视图在背景中移动。
发布相关代码。 – 2010-04-12 19:43:31