我需要滚动一个大于屏幕尺寸的背景图像,让它无休止地循环

时间:2010-11-15 22:33:40

标签: image ios4 scroll background repeat

我正在编写一个ipad应用程序,我将方向锁定为横向模式。 我想要一个高100像素但是ipad屏幕宽度4倍的PNG文件。

我想要的是这个背景图像显示在屏幕上然后自动开始 滚动计时器。我确保此图像的开始和结束部分匹配。 一旦到达图像的末尾,我希望再次显示起始位。 如果速度太慢,此图像应沿着一个像素移动或更大的跳跃滚动。

我真的很难找到一些示例代码来展示如何显示这样做。

这不是我写的游戏所以不想使用OpenGL或任何花哨的东西。

到目前为止我看过的例子并不完全是我所追求的。

我可以简化并准确说明我被困在哪里......

假设我将图像加载到1000像素宽,100高的内存中。

有人可以向我展示几行代码,这些代码可以让我剪切出一个矩形,开始说x轴上的200像素为这个较大的图像,并且是一个100 x 100像素的矩形。

我怎么能把这个矩形切掉并在屏幕上显示 - 速度并不重要,如前所述。

然后我可以自己制作滚动部分(我希望)并希望稍后将其发布回来。

我正在思考CGContext类型命令,但是尽管看了一些示例,但是在文档中我仍然面对着一堵砖墙。 正是这个“切出一个矩形部分”,我最磕磕绊绊。

感谢。

任何帮助表示感谢。

3 个答案:

答案 0 :(得分:0)

披露 - 我根本不是iPhone开发者。

但是,我要做的是将图像分成几块。 (也许是8)所以,你最终会得到8块高,每块高100px,屏幕宽度的1/2。

然后,当图像滚动时,您可以在转动之前加载每个图像以进行显示。因此,当图像从屏幕流出时,您可以将其替换为下一个要在屏幕另一侧显示的图像。

答案 1 :(得分:0)

披露 - 我根本不是iPhone开发者。 (借用jjnguy中的那一行)

拍摄背景图像并将其展开一个屏幕,然后将屏幕的开头复制到新区域。现在你所要做的就是裁剪所需的部分并显示它 - 已经完成了环绕。

答案 2 :(得分:0)

感谢您的所有帮助和建议。

最后,我决定最简单的方法就是Mark Ransom所建议的 - 因为这样可以解决问题。

我使用下面的4行代码剪切出我想要200像素宽,100高的部分。

然后我在计时器上循环这个变化的startX。完美!

// Our image rectangle is 200 pixels wide by 100 pixels high
    CGRect selectionRect = CGRectMake(startX, 0.0, 200.0, 100.0);
    CGImageRef resultImageRef = CGImageCreateWithImageInRect(masterImage.CGImage, selectionRect);
    UIImage *outputFrame = [[UIImage alloc] initWithCGImage:resultImageRef];
    [outputImageViewOutlet setImage:outputFrame];

最后..它是CGRectMake和CGImageCreateWithImageInRect任何想要这样做的人都应该进一步研究!

谢谢大家。希望这有助于某人。