首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

iOS 根據設備類型啟動不同啟動視圖:補全窗口顯示流程

     編輯:程式設計綜合問答

問題代碼

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    // 根據設備類型選擇 ViewController...
    if (iPhone5) self.viewController = [[ViewController alloc] initWithNibName:@"ViewController_Portrait5" bundle:nil];
    else if (iPhone4) self.viewController = [[ViewController alloc] initWithNibName:@"ViewController_Portrait4" bundle:nil];
    else self.viewController = [[ViewController alloc] initWithNibName:@"ViewController_PortraitPad" bundle:nil];
    // 缺少關鍵兩行,導致窗口黑屏
}

修正:設置 rootViewController 並顯示窗口

self.window.rootViewController = self.viewController;
[self.window makeKeyAndVisible];
return YES;

現代最佳實踐(iOS 13+ SceneDelegate)

- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions {
    UIWindowScene *windowScene = (UIWindowScene *)scene;
    self.window = [[UIWindow alloc] initWithWindowScene:windowScene];
    // 同樣邏輯選擇 VC
    self.window.rootViewController = self.viewController;
    [self.window makeKeyAndVisible];
}

補充

  • 優先使用 Auto Layout / Size Classes 適配不同尺寸,避免維護多套 Nib。
  • 啟動圖可用 Launch Screen Storyboard 統一配置。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved