View iPhone画框问题

View iPhone画框问题,view,ios4,drawing,View,Ios4,Drawing,我有一个基于我的应用程序性能的问题 先了解一些背景: 我正在开发一个iPhone应用程序,它在我的MacBook上运行平稳,但在我的iPhone4开发设备上运行有点滞后。所以我开始寻找原因,很快就找到了。 该应用程序是一款使用由计时器触发的drawRect方法的游戏 问题: 在这个drawRect中,我使用drawInRect:方法从UIImage中绘制背景。因为我希望背景是移动的,所以我有一个比iPhone屏幕宽的图像,我通过定时器触发的小步骤将其绘制到-400像素,然后将其重置为0像素,以在

我有一个基于我的应用程序性能的问题

先了解一些背景: 我正在开发一个iPhone应用程序,它在我的MacBook上运行平稳,但在我的iPhone4开发设备上运行有点滞后。所以我开始寻找原因,很快就找到了。 该应用程序是一款使用由计时器触发的drawRect方法的游戏

问题: 在这个drawRect中,我使用drawInRect:方法从UIImage中绘制背景。因为我希望背景是移动的,所以我有一个比iPhone屏幕宽的图像,我通过定时器触发的小步骤将其绘制到-400像素,然后将其重置为0像素,以在我的游戏中获得“移动效果”。 这似乎使我的应用程序滞后。当我把它画在iPhone的框架内时,我没有问题,所以我很确定这就是问题所在

有什么解决办法吗?更好的技术等等? 我不想使用几个图像的动画来设置背景动画


您诚挚的

您如何在屏幕上移动此图像?你是否触发了一次移动,比如说每1/30秒一次,因为如果你没有触发,这可能是“拉格”外观的原因。我建议设置一个新的nsrunlop,并将此运动作为其中的一部分,每1/30秒触发一次run循环,这样可以获得30 FPS的帧速率,看起来很平滑


另外,发布您用于此目的的代码,也许我们可以发现问题。

我刚刚重述了这个问题,我想到了一个解决方案。与其每隔1/30秒重新绘制一次,不如只绘制一次,然后重新定义图像所在的帧。创建一个执行此操作的方法,然后设置一个新的nstimer,该nstimer每1/30秒调用一次此新方法。像这样的

-(void) movePicture {
    position += 5;
    if (position <= 0) {
        [moveTimer invalidate];
    }
    picture.frame = CGRectMake(position,10,10,10);
    [self.view setNeedsDisplay];
}
-(无效)移动图片{
位置+=5;

如果(这就是我所做的。我有一个CGPoint,它保存着我绘制的图像的原点。我每1/30秒递减一次,直到它达到-400 px,然后我将它重置为0 px。每次我更新CGPoint,我都会绘制一个CGRect,并将其传递给drawRect方法。滞后仅在绘制边界外时出现。假设我通过小步下降到100像素(正)并重置为200像素我没有任何性能问题。编辑:这可能还与所绘制图像的大小有关。它现在是960 x 320像素。是否有用于大型.png文件的技术,或者我应该对其进行压缩?