iOS iPadOS 的多窗口支持 multiple windows

745 阅读1分钟

简要说明

Xcode11新项目模版发生了一些变化,多了SceneDelegate,原因是 iOS13 引入了多窗口的支持。

多了SceneDelegate

结论及用法

结论

iOS 13 中由Info.plist及AppDelegate任一决定是否走新流程。

  • 如果Info.plist->Application Scene Manifest 选项下启用了多窗体支持(Enable Multiple Windows = YES) 或者 有参数(Scene Configuration)则会必须走新流程。
  • 如果AppDelegate中实现了- (UISceneConfiguration *)application:(UIApplication *)application configurationForConnectingSceneSession:(UISceneSession *)connectingSceneSession options:(UISceneConnectionOptions *)options API_AVAILABLE(ios(13.0))则会走新流程。
  • 如果不符合上述任一条件,将保持旧的流程

一些细节

Info.plist 中相关配置如图

Info.plist中相关配置

多窗口里。每个窗口的生命周期独立出来。不再调用AppDelegate中的生命周期变化时的方法。由单独的SceneDelegate : UIResponder <UIWindowSceneDelegate>类的实例分别处理。