Xcode11-创建项目UISceneDelegate

2019-10-23  本文已影响0人  May_Dobin

UISceneDelegate

  • enable Multipe Windows --- 是否允许分屏
  • Scene Configuratiton --- 屏幕配置项
  • Application Session Role --- 程序屏幕配置规则(为每个Scene指定规则)
  • Configuration Name --- 配置名称
  • Delegate Class Name --- 代理类名称
  • Storyboard Name --- Storyboard名称
#pragma mark - UISceneSession lifecycle
- (UISceneConfiguration *)application:(UIApplication *)application configurationForConnectingSceneSession:(UISceneSession *)connectingSceneSession options:(UISceneConnectionOptions *)options {
    // Called when a new scene session is being created.
    // Use this method to select a configuration to create the new scene with.
    return [[UISceneConfiguration alloc] initWithName:@"Default Configuration" sessionRole:connectingSceneSession.role];
}

那么问题来了,想要自定义Window,不通过Storyboard创建,该如何操作?

iOS13及以上系统

- (void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(UISceneConnectionOptions *)connectionOptions {
    if (@available(ios 13, *)) {
         if (scene) {
             self.window = [[UIWindow alloc] initWithWindowScene:(UIWindowScene *)scene];
             self.window.frame = CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, [UIScreen mainScreen].bounds.size.height);
             UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:[[ViewController alloc]init]];
             self.window.rootViewController = nav;
             [self.window makeKeyAndVisible];
         }
     }
}

低于iOS13的系统

@property (strong, nonatomic) UIWindow *window;
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
    self.window = [[UIWindow alloc] initWithFrame:[UIScreen mainScreen].bounds];
    ViewController * vc = [[ViewController alloc]init];
    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:vc];
    self.window.rootViewController = nav;
    [self.window makeKeyAndVisible];
    return YES;
}
上一篇 下一篇

猜你喜欢

热点阅读