-1

我见过不同的应用程序,每次在视图背景上打开应用程序时,图像都会发生变化。这是如何实现的?

4

4 回答 4

1

听起来您所看到的是 iOS 系统在将您的应用程序放入后台之前为其制作的缓存屏幕截图。

这是自动处理的,您确实有机会拦截它。

查看此答案,您可以在应用程序进入后台时将图像放在应用程序上,这将被缓存并用于重新启动应用程序。

于 2012-07-31T19:37:58.480 回答
0

将 background_0.png、background_1.png、background_2.png、background_3.png 等添加到您的项目中。

#define max_image_number 3

将以下内容添加到您的 viewDidLoad 方法中:

-(void)viewDidLoad {  
    [super viewDidLoad];
    [self updatedBackgroundImage];
   [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(updateBackgroundImage) name:UIApplicationWillEnterForegroundNotification object:nil];
}

-(void) updateBackgroundImage{
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

    if (![defaults integerForKey:@"imageNumber"]) {
                [defaults setInteger:0 forKey:@"imageNumber"];
            }

            int i = [defaults integerForKey:@"imageNumber"];

            myUIimageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"background_%d.png",i]];
            i++;

            if (i > max_image_number) {
                [defaults setInteger:0 forKey:@"imageNumber"];

           }else{
                [defaults setInteger:i forKey:@"imageNumber"];
            }
    ...

    }

上面将在 viewController 首次加载以及从后台运行返回时更新图像。我认为这是你所缺少的:)。

请记住停止在 viewDidUnload 方法中侦听通知,您应该进行设置。

于 2012-07-31T19:33:24.077 回答
0

假设您想要更改一个或多个视图的背景图像,具体取决于应用程序的启动。

保存int x = 0到 NSUserDefaults。在每次应用程序启动时将其递增 1。当您要呈现视图时,检查该 int 并设置如下背景图像:

switch(x%3){// %3 just to make it a bit random
   case 0://set this image; 
         break;
   case 1://set that image
         break;
      //and so on
}
于 2012-07-31T19:12:42.700 回答
0

查看您提到的应用程序的 App Store 中的屏幕截图,看起来UIImageView主菜单的视图层次结构的后面只有一个。您可以通过将UIImage对象分配给其image属性来更改此设置。

于 2012-07-31T19:00:07.457 回答