Xcode 11/iOS 13 变化

2019-11-07  本文已影响0人  JQWONG
前言

Xcode 11新项目会发现,除了AppDelegate之外还多了一个SceneDelegate,这是因为在iPadOS中支持多窗口的结果,AppDelegate中不再拥有window属性,window属性被移到SceneDelegate了

了解AppDelegate职责

所以如果要设置跟控制器,不应该在AppDelegate中设置了,应该转由SceneDelegate设置

func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        guard let windowScene = (scene as? UIWindowScene) else { return }
        let vc = ViewController()
        let nav = UINavigationController(rootViewController: vc)
        // Create the window. Be sure to use this initializer and not the frame one.
         //需要注意的是,初始化window时,要用windowScene:这个方法拿到windowScene来初始化,否则初始化后的界面是黑的
        window = UIWindow(windowScene: windowScene)
        window?.rootViewController = nav
        window?.makeKeyAndVisible()
    }

DarkMode

总所周知,iOS其中比较大的一个变动就是支持DarkMode,如果在design上面没有因为DarkMode而更新,我们可以让app无论是在DarkMode还是LightMode(光亮)下都以LightMode的形式显示
只需要在info.plist文件中添加UserInterfaceStyle配置, 并设置为Light

<key>UIUserInterfaceStyle</key>
<string>Light</string>

WWDC2019:Optimizing App Launch
Architecting Your App for Multiple Windows
Apple’s New UIScene API: A Programmatic Approach
上一篇 下一篇

猜你喜欢

热点阅读