我正在创建我的第一个iPhone原生应用程序(初学者Objective-C)。在我的主菜单标题屏幕上,我希望背景图像缓慢向左移动。是否可以平铺背景图像并使其移动?我基本上试图让我的云在背景中漂移。你会如何做到这一点?
答案 0 :(得分:2)
我会在屏幕上添加一个UIImageView(放在屏幕上的其他内容下)。将云图像放在UIImageView中,并为帧值设置动画,使其在屏幕上移动。
像这样的东西(此代码未经验证)会为图像视图设置动画,向左移动屏幕:
cloudsImage.frame = CGRectMake(0,0,320,100); // depends on your image
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:3.0f]; // duration affects how fast it moves
cloudsImage.frame = CGRectMake(-320,0,320,100); // moves left off the screen
[UIView commitAnimations];
你也可以为同一个图像添加动画,然后在第一个图像从左侧向外滑动,使其显示为来自右侧的连续云层。
cloudsImage1.frame = CGRectMake(0,0,320,100); // depends on your image
cloudsImage2.frame = CGRectMake(320,0,320,100); // start off the right edge
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:3.0f]; // duration affects how fast it moves
cloudsImage1.frame = CGRectMake(-320,0,320,100); // moves left off the screen
cloudsImage2.frame = CGRectMake(0,0,320,100); // moves left onto the screen
[UIView commitAnimations];
答案 1 :(得分:0)
我认为你可以用UIScrollView做一些聪明的事情。一旦视图加载,您可以在背景循环中为视图内容偏移设置动画。查看ScrollViewSuite示例代码,了解有关滚动视图和平铺的一些好提示。希望有所帮助。
答案 2 :(得分:0)
我使用基于块的动画做了类似的事情来实现这种效果。每个动画块都在一个单独的函数中定义。
假设两张图片的大小与屏幕相同。
一个图像完全在屏幕上开始,一个图像从屏幕左侧开始,右侧与屏幕的左边缘齐平(即,它完全在屏幕左侧)。 我们将屏幕上的图像称为“A”,将屏幕外图像称为“B”。
功能1() 第一个块将图像屏幕宽度向右移动 完成后,它将刚刚移出屏幕('A')的图像设置回屏幕左侧,然后调用function2()。
函数2() 第二个块将图像屏幕宽度向右移动 完成后,它将刚刚移出屏幕('B')的图像设置回屏幕左侧,然后调用function1()。
这是第一个功能:
-(void)animate_1
{
[UIView animateWithDuration:roadTimerPeriod delay:0.0
options:UIViewAnimationOptionCurveLinear|UIViewAnimationOptionAllowUserInteraction
animations: ^{
// frame 1 moves off bottom
imageAnimatedRoad1.transform = CGAffineTransformTranslate(imageAnimatedRoad1.transform,0,480);
// frame 2 moves onto top
imageAnimatedRoad2.transform = CGAffineTransformTranslate(imageAnimatedRoad1.transform,0,480);
}
completion:^(BOOL finished)
{
// reset frame 1 ready to move on
imageAnimatedRoad1.frame = CGRectMake(0,-480,320,480);
[self animate_2];
} ];
}
你认为这是一个很好的解决方案,还是我错过了一些明显的东西?