2011-07-08 28 views

答えて

6

-[UIApplicationDelegate applicationWillResignActive:]でビュースタックを更新できます。

アプリが再開すると変更が表示され、-[UIApplicationDelegate applicationDidBecomeActive:]でスプラッシュ画面をもう一度削除できます。

3

モルテンの答えに沿ったコードです。また、これはシミュレータで正しく動作しないことに注意したいが、デバイス上で実行するときにはそうである。シミュレータはremoveFromSuperviewが呼び出されるまで黒い画面を表示します。

- (void)applicationDidEnterBackground:(UIApplication *)application 
{ 
    // We don't want to show a splash screen if the application is in UIApplicationStateInactive (lock/power button press) 
    if (application.applicationState == UIApplicationStateBackground) { 
     UIImageView *splash = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"splashimage.png"]]; 
     splash.frame = self.window.bounds; 
     [self.window addSubview:splash]; 
    } 

} 

- (void)applicationDidBecomeActive:(UIApplication *)application 
{ 
    // Make sure you do not remove the last view in the event something odd happens 
    if ([[self.window subviews] count] > 1) { 
     // Not recommended by Apple, but client gets what client wants 
     [NSThread sleepForTimeInterval:1.0]; 
     [[[self.window subviews] lastObject] removeFromSuperview]; 
    } 
} 

注applicationStateは「ホームボタンを押す」と「ロック/電源ボタンを押す」を区別するのに役立ちますので、私はapplicationDidEnterBackgroundの代わりapplicationWillResignActiveを使用。 UIApplicationStateBackground = "押したホームボタン"。

+1

[AppleのiOS App Programming Guide](http://developer.apple.com/library/ios/DOCUMENTATION/iPhone/Conceptual/iPhoneOSProgrammingGuide/ManagingYourApplicationsFlow/ManagingYourApplicationsFlow)に従って、 'applicationDidEnterBackground:'はこれを行うための適切な場所です。 .html#// apple_ref/doc/uid/TP40007072-CH4-SW35)(「背景に移動するときのやり方....写真を撮る準備をする」を参照)。 – bunnyhero

関連する問題