問題は、シミュレーターでテストしていることだと思います。デバイスでは、正常に動作するはずです。
これをテストしたところ、うまくいきました。アプリがバックグラウンドに入ったときに、スプラッシュ画像を含むイメージビューを追加します -
- (void)applicationDidEnterBackground:(UIApplication *)application
{
UIImageView *imageView = [[UIImageView alloc] initWithFrame:self.window.bounds];
imageView.tag = 101; // Give some decent tagvalue or keep a reference of imageView in self
// imageView.backgroundColor = [UIColor redColor];
[imageView setImage:[UIImage imageNamed:@"Default.png"]]; // assuming Default.png is your splash image's name
[UIApplication.sharedApplication.keyWindow.subviews.lastObject addSubview:imageView];
}
そして、アプリがフォアグラウンドに戻ったとき -
- (void)applicationWillEnterForeground:(UIApplication *)application
{
UIImageView *imageView = (UIImageView *)[UIApplication.sharedApplication.keyWindow.subviews.lastObject viewWithTag:101]; // search by the same tag value
[imageView removeFromSuperview];
}
注 - シミュレーター (iOS 7.0) では、ホーム ボタンを 2 回押して確認すると (Cmd + H)、追加されたサブビューは表示されませんが、デバイスでは期待どおりに動作します (アプリなどpaypal
) BofA
。
編集:(追加情報)
上記で説明したように、サブビュー/ぼかしを追加して機密情報を隠したり置き換えたりすることに加えて、iOS 7ではignoreSnapshotOnNextApplicationLaunch
、UIApplication
内部applicationWillResignActive
またはapplicationDidEnterBackground
.
UIApplication.h
// Indicate the application should not use the snapshot on next launch, even if there is a valid state restoration archive.
// This should only be called from methods invoked from State Preservation, else it is ignored.
- (void)ignoreSnapshotOnNextApplicationLaunch NS_AVAILABLE_IOS(7_0);
また、allowScreenShot
フラグは制限ペイロードで調べることができます。