2012-02-20 15 views
0

私はフルスクリーンスプラッシュ(320x480 - ステータスペインとDefault.pngと同じイメージなし)を短時間遅らせて画面を左に動かしたいと思っています。私はスプラッシュとアニメーションを作成することができます。唯一の問題は、スプラッシュ画面の上に、下にあるビューコントローラのステータスペインが表示されることです。どのようにして、スプラッシュ画面上にステータスペインが表示されずに、基本的なルートビューコントローラ(ステータスペインを持つ)がアニメーションが進行するにつれて表示されるように、フルスクリーンスプラッシュをアニメートできますか?ステータスペインの後ろに隠れているiPhoneのアニメーションスプラッシュ画面

ステータスペインを最初に非表示にするにはinfo.plistフラグを使用しますが、スプラッシュが画面外に移動し、スプラッシュ自体の上には表示されないため、ステータスペインを表示する必要があります。

基本的なステータスペインを非表示にしてアニメーションの最後に表示したくない場合は、メインビューの残りの部分で徐々に表示されるようにしたいと思います。

これはすべて意味があると思います。ここで

おかげ 2J

答えて

0

アニメーションスプラッシュビューコントローラをステータスウィンドウに追加してからフェードアウトすることができます。あなたが運が悪いかもしれない場合、私はビューが切り取られているとは思わない。この例のようにアクセスできます。

UIWindow *statusWindow = [[UIWindow alloc]initWithFrame:CGRectMake(0, 0, 320, 480)]; 

    statusWindow.hidden = NO; 
    statusWindow.windowLevel = UIWindowLevelStatusBar+1; 
    UIView *mask = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 320, 480)]; 
    mask.backgroundColor = [UIColor redColor]; 
    [statusWindow addSubview:mask]; 

    [statusWindow makeKeyAndVisible]; 
    [UIView animateWithDuration:1 delay:5 options:nil animations:^{ 
     statusWindow.alpha = 0; 
    } completion:^(BOOL finished) { 
     [self.window makeKeyAndVisible]; 
     [statusWindow removeFromSuperview]; 
    }]; 

このようにステータスバーは非表示になります。唯一の問題は、向きの変更を追跡し、ステータスバーウィンドウの上にあるUIWindowを考慮して手動でマスクを調整する必要があることです。

+0

こんにちは、お返事ありがとうございます。 2番目のUIWindowが可能な解決策であるとは思っていましたが、私はApple iOSプログラミングガイドで次のように見つけました... UIWindowオブジェクト UIWindowオブジェクトは、画面上の1つ以上のビューのプレゼンテーションを調整します。ほとんどのアプリにはメイン画面にコンテンツを表示するウィンドウが1つしかありませんが、アプリには外部ディスプレイに表示されるコンテンツ用の追加ウィンドウがある場合があります。 アプリケーションの内容を変更するには、ビューコントローラーを使用して対応するウィンドウに表示されるビューを変更します。ウィンドウ自体を交換することはありません。 – 2Jam

+0

それはできないとは言いません。ただではないと示唆している。 – MobileOverlord

+0

最新のプログラミングガイドでは、「ウィンドウ自体を交換することは決してありません」と規定されています。これはおそらくあなたがそれをしていないことを示唆しているより強いでしょう。アプリは重要なクライアントのため、拒否に関していかなるリスクも取ることができません。私はその答えを作業としてマークしましたが、実際には決して承認ルールを曲げない解決策を探しています。 - ありがとう:) – 2Jam

0

は非常に基本的なスプラッシュスクリーンを使用した例です。アプリケーション代理人のapplication:didFinishLaunchingWithOptions:の末尾に次のコードを追加する必要があります。

// create splash screen 
splashView = [[UIView alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; 
splashView.backgroundColor = [UIColor lightGrayColor]; 

// adding views to window 
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease]; 
[self.window addSubview:rootController.view]; 
[self.window addSubview:splashView]; 
[self.window makeKeyAndVisible]; 

// animate splash screen 
[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:2]; 
[UIView setAnimationDelegate:self]; 
[UIView setAnimationDidStopSelector:@selector(removeSplashView:)]; 
[splashView setAlpha:0.0]; 
[UIView commitAnimations]; 
+0

@ David。提供された提案をいただきありがとうございますが、実際にはrootControllerビューのステータスペインを隠すわけではありません。スプラッシュ画面が表示されるとすぐに、アニメーションが開始される前にステータスペインが上に表示されます。 – 2Jam

関連する問題