2012-02-07 11 views
6

私はapplicationDidBecomeActiveが呼ばれるたびにフェードアウトメインスプラッシュ画面の感触を偽装したいんだけど、それは働いていません。私は間違って何をしていますか?IOSは(5優しいiphone)スプラッシュ画面をフェードアウト

- (void)applicationDidBecomeActive:(UIApplication *)application 
{ 
    if(IS_IPHONE_5) 
     splash = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Default-568h.png"]]; 
    else 
     splash = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Default.png"]]; 

    [self.window.rootViewController.view addSubview:splash]; 

    [UIView animateWithDuration:0.5 
        animations:^{ 
         splash.alpha = 0; 
        } 
        completion:^(BOOL finished) { 
         [splash removeFromSuperview]; 
        }]; 
} 

次に、次のように定義する必要があります。私はプロジェクト.pchを使用しますが、必要に応じてヘッダーを使用することができます。

#define IS_IPHONE_5 (fabs((double)[ [ UIScreen mainScreen ] bounds ].size.height - (double)568) < DBL_EPSILON) 

答えて

3

これが本当にあなたのコードの場合は、おそらくイメージ名にタイプミスがあります。 (ない場合は、私たちは手段を「動作していない」ものを知ってみましょう。)

また、スプラッシュ画面が正常にすべてのapplicationDidBecomeActive:を起動しません。 didFinishLaunchingWithOptions:は、あなたが立ち上げられ、あなたのためにスプラッシュ画面が表示されたことを知っている時間です。

+1

奇妙なことに、シミュレータではいつもスプラッシュが上がっていますが、デバイスでは初期ロード時のみです。知っておいてよかった。 – Jacksonkr

2

コードは正しく表示されます。私はいくつかのアプリでこれを行う。

はしかし、あなたはapplicationDidBecomeActive:applicationDidFinishLaunching:options:とないの一環としてこれをやりたいです。スプラッシュ画面が表示されているときにフェードアウトするのは意味があります。これは、アプリが起動されていてまだ実行されていない場合のみです。あなたのアプリがアクティブになると、バックグラウンドで、つまりすでに起動されている可能性があります。この場合スプラッシュスクリーンをフェードアウトさせることは意味がありません。

それとも、あなたはそれがサスペンド状態からのバックグラウンドから再開されたとしても、それがアクティブになったとき、あなたのスプラッシュ画面を常に表示させたいのですか?

3

rootViewController.viewの代わりにウィンドウに直接追加してみてください。

[self.window addSubview:splash]; 

また、view.transformを使用してイメージを回転して、スタートアップイメージに合わせる必要があります。

6

私はあなたがこの

-(BOOL)application:(UIApplication *)application willFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    [UIView animateWithDuration:0.2 
          delay:0 
         options: UIViewAnimationCurveEaseIn 
        animations:^{ 
         self.window.viewForBaselineLayout.alpha = 0; // and at this alpha 
        } 
        completion:^(BOOL finished){ 
        }]; 

    return YES; 
} 

をやって素敵な遷移が、その後すぐに

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 

    [UIView animateWithDuration:0.5 
          delay:0 
          options: UIViewAnimationCurveEaseOut 
         animations:^{ 
         self.window.viewForBaselineLayout.alpha = 1; // and at this alpha 
        } 
        completion:^(BOOL finished){ 
        }]; 

の開始時にそれが今ロードされたにロード画面からのクロスfadeish影響を与え得るios6から、見つけますアプリ画面。

+0

haこれは正しい解決策です –

関連する問題