2010-02-23 38 views
0

我有一個tabbar應用程序。這裏是我的代碼啓動畫面和第一個視圖控制器之間的意外延遲

- (void)applicationDidFinishLaunching:(UIApplication *)application { 
[application setStatusBarHidden:YES animated:NO]; 
[self showSplashView]; 
} 
- (void)showSplashView { 
//If i don't use black view it displays white screen thats look so bad... 
    UIView* blackView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)]; 
blackView.backgroundColor = [UIColor blackColor]; 
[window addSubview:blackView]; // sends [blackView retain] 
[blackView release]; 

splashView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)]; 
    splashView.image = [UIImage imageNamed:@"MyImage.png"]; 
    [window addSubview:splashView]; 
    [window bringSubviewToFront:splashView]; 
    [UIView beginAnimations:nil context:nil ]; 
[UIView setAnimationDelay:5.0]; 
    [UIView setAnimationDuration:0.5]; 
    [UIView setAnimationTransition:UIViewAnimationTransitionNone forView:window cache:YES]; 
    [UIView setAnimationDelegate:self]; 
    [UIView setAnimationDidStopSelector:@selector(startupAnimationDone:finished:context:) ]; 
    splashView.alpha = 0.0; 
    splashView.frame = CGRectMake(-60, -60, 440, 600); 

    [UIView commitAnimations]; 

    } 
    - (void)startupAnimationDone:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context { 

[[UIApplication sharedApplication] setStatusBarHidden:NO animated:YES]; 
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleBlackOpaque]; 
UIView* blackView = [[window subviews] objectAtIndex:0]; 
    [blackView removeFromSuperview]; 
    [splashView removeFromSuperview]; 
    [splashView release]; 
[window addSubview:tabBarController.view]; 
[window makeKeyWindow]; 
} 

所以我的問題是,當我的應用程序啓動首先,它顯示黑屏,幾秒鐘後,它會顯示我的開機畫面。當啓動畫面動畫再次完成時,它會顯示黑屏,幾秒後它會顯示我的視圖控制器。我不知道它爲什麼會發生。我希望我的問題很清楚。 謝謝 編輯 我的預期行爲是一旦應用程序啓動它應顯示我的啓動畫面,而不是黑屏,一旦飛濺動畫完成它應該顯示我的第一個視圖控制器(這是第一個tabbar中的表視圖控制器) ..

編輯2: 是什麼事情的時間在此代碼 消耗[窗口addSubview:tabBarController.view]; 如何在啓動屏幕運行時在後臺執行此過程。

+0

哪部分是問題? – 2010-02-23 18:45:45

+0

感謝羅布,我修改了我的問題。代碼中沒有錯誤,但我沒有得到我期待的行爲。我希望現在清楚。 – Nnp 2010-02-23 18:53:28

回答

0

第一個黑屏是因爲您將動畫延遲設置爲5秒。爲什麼不花時間準備第一個視圖控制器,然後顯示飛濺動畫。然後,您可以在動畫完成後轉換到視圖控制器。

此外,你應該有一個Default.png類似於你的第一個屏幕。那麼你不需要擔心那個blackView。如果你真的想要這個飛濺動畫的東西,你應該使Default.png看起來像動畫的第一幀。

但是,我強烈建議您查看Apple的HIG文檔。你真的不符合這裏的最佳實踐。

+0

感謝羅布,它只是我看到許多許多應用程序有splash.and更多在我的客戶需要它.. – Nnp 2010-02-23 18:56:36

+0

我已經刪除blackview和動畫延遲,但它仍然顯示在開始時黑色視圖,我的屏幕消失沒有任何延遲它顯示白色屏幕之前,我的看法得到display.can你告訴我如何準備我的看法,而飛濺得到顯示。 – Nnp 2010-02-23 19:13:39

相關問題