如果想程序剛啓動時顯示啓動頁(logo頁),並且啓動頁全屏顯示,程序加載完成後又顯示狀態欄,需要做如下三步:
- 啓動頁其實只是一張圖片而已,如果你的程序需要兼容 iPhone3 和 iPhone4,那麼要製作對應分辨率的圖片,iPhone3 爲 480 * 320,iPhone4 爲 960 * 640。分別命名爲 Default.png 和 [email protected],然後都放在工程下(可以放到子目錄中)。這樣程序啓動時會默認的去加載。
- 在<AppName>-info.plist 文件中加入選項 "Status bar is initially hidden", 值爲 YES
- 在 AppDelegate.m 文件中的 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 方法內加入代碼: [[UIApplication sharedApplication] setStatusBarHidden:NO];
如果還想讓啓動頁保持一定時間以便讓用戶看清楚啓動頁的內容(啓動頁一般顯示公司logo等信息),可以在 AppDelegate.m 文件中的 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 方法內加入延時代碼:
[NSThread sleepForTimeInterval:2.0]; //這裏延時兩秒
【注意】
如果你的程序同時使用了導航欄作爲根視圖控制器 UINavigationController,則應該將語句 [[UIApplication sharedApplication] setStatusBarHidden:NO] 放在 [self.window makeKeyAndVisible]; 之前,否則會出現狀態欄與導航欄重疊的情況。可能是因爲調用 makeKeyAndVisible 時會去判斷當前程序是否顯示狀態欄,以此來布導航欄的位置。
如下代碼會導致導航欄與狀態欄重疊:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
[NSThread sleepForTimeInterval:2.0]; //延時2秒,以便用戶看清楚啓動頁
LoginController *login = [[[LoginController alloc] initWithNibName:@"LoginController" bundle:nil] autorelease];
self.navController = [[[UINavigationController alloc] initWithRootViewController:login] autorelease]; //初始化導航欄控制器
self.window.rootViewController = self.navController;
[self.window makeKeyAndVisible];
[[UIApplication sharedApplication] setStatusBarHidden:NO]; //啓動完成後顯示狀態欄,該語句放在 makeKeyAndVisible 之後會導致狀態欄與導航欄重疊
return YES;
}
以上代碼應該改爲:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
[NSThread sleepForTimeInterval:2.0]; //延時2秒,以便用戶看清楚啓動頁
LoginController *login = [[[LoginController alloc] initWithNibName:@"LoginController" bundle:nil] autorelease];
self.navController = [[[UINavigationController alloc] initWithRootViewController:login] autorelease]; //初始化導航欄控制器
self.window.rootViewController = self.navController;
[[UIApplication sharedApplication] setStatusBarHidden:NO]; //啓動完成後顯示狀態欄,該語句應該放在 makeKeyAndVisible 之前
[self.window makeKeyAndVisible];
return YES;
}