ビューの背景でアプリを開くたびに画像が変わるさまざまなアプリを見てきました。これはどのように達成されますか?
4 に答える
あなたが見ているのは、iOSシステムがアプリをバックグラウンドに置く直前に作成しているキャッシュされたスクリーンショットのようです。
これは自動的に処理され、これを傍受する機会があります。
この回答を確認してください。背景に入るときに画像をアプリの上に置くことができます。これはキャッシュされ、アプリの再起動に使用されます。
あなたが言及したアプリケーションのAppStoreのスクリーンショットを見るとUIImageView
、メインメニューのビュー階層の後ろにあるように見えます。UIImage
これを変更するには、オブジェクトをそのimage
プロパティに割り当てます。
アプリケーションの起動に応じて、1つまたは複数のビューの背景画像を変更するとします。
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
}
プロジェクトに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メソッドで通知のリッスンを停止することを忘れないでください。設定する必要があります。