2009-12-14 31 views
0

我想添加徽標視圖作爲iPhone應用午餐。我的代碼如下爲iPhone應用添加徽標

- (void)applicationDidFinishLaunching:(UIApplication *)application 
{ 
    UIImage image = [[UIImage alloc] imageWithContentsOfFile:@"1.jpg"]; 
     UIImageView view = [[UIImageView alloc] initWithImage:image]; 
     [window addSubViews:view]; 

     [NSThread sleepForIntervalTime:10]; 
     [view removeFromSubview]; 
    [window addSubview: navigationController.view]; 
    [window makeKeyAndVisible]; 
} 

但模擬器無法顯示,因爲我want.just顯示導航控制器的視圖。 我認爲原因是iPhone渲染「applicationDidFinishLaunching」後的第一個視圖 有沒有其他解決方案?

+2

記住,蘋果公司特別建議在應用程序啓動不使用閃屏。相反,你應該有一個Launch Image,它看起來像你的UI的一個簡單版本。這有助於給用戶一個印象,即您的應用程序可以很快啓動。閱讀人機界面指南瞭解更多信息。 – bpapa 2009-12-14 15:49:27

+0

儘管幾乎每款遊戲都使用Default.png作爲閃屏,但情況並非如此。這完全取決於你正在開發的東西。 – 2009-12-14 18:35:23

回答

3

只需添加你想要的LOGO到您的項目名稱爲圖像:爲Default.png

它會自動成爲你的應用程序的啓動屏幕。

您的方法不起作用。 applicationDidFinishLaunching代表在之後運行完成所有加載。此外,延遲10秒將不準確,因爲應用程序在某些設備上的加載速度可能比其他設備快。

1

Pablo是對的 - 你可以使用Default.png來做到這一點。

但是,您的代碼將永遠不會有兩個原因。

1)

應用程序的主線程是UI線程 - 一個負責處理更新的界面,這是正在運行的applicationDidFinishLaunching:線程。

如果你只是打電話[NSThread sleepForIntervalTime:10]線程會睡覺。但是,這也意味着,當線程正在休眠時,UI將不會被更新。然後,當您撥打[view removeFromSuperview]時,它將刪除圖像並繼續。你永遠不會看到圖像!

爲了讓您的代碼工作,你應該做這樣的事情:

- (void)applicationDidFinishLaunching:(UIApplication *)application 
{ 
    [window addSubview: navigationController.view]; 

    UIImage *image = [UIImage imageWithContentsOfFile:@"1.jpg"]; 
    UIImageView *view = [[UIImageView alloc] initWithImage:image]; 
    [window addSubView:view]; 
    [view release]; 

    [NSTimer scheduledTimerWithTimeInterval:10 target:self selector:@selector(removeImage:) userInfo:view repeats:NO]; 
    [window makeKeyAndVisible]; 
} 


- (void) removeImage:(NSTimer *)timer { 
    UIImageView *view = (UIImageView *)timer.userInfo; 
    [view removeFromSuperview]; 
} 

該代碼會顯示10秒鐘的圖像,然後將其刪除。但是,如果您只是想在啓動時使用圖像,則使用Default.png肯定是實現它的方式!

2)

您已經添加了圖像的導航視圖盈 - 在上面的代碼中,我提出將導航器的視圖是UIImage的面前。這意味着圖像將在導航器的前面延遲10秒,直到它被移除,顯示導航器視圖。

希望這有助於

山姆