我见过不同的应用程序,每次在视图背景上打开应用程序时,图像都会发生变化。这是如何实现的?
问问题
1354 次
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 回答