UIScene概念尚不明确



在我们都习惯AppDelegate中的方法之前,我们创建UIWindow,然后为该Window设置rootViewController。有时,当我们需要自定义警报时,我们可以创建一个新的UIWindow,它将在上面。

现在Xcode自动创建UIScene,并在此场景基础上创建UIWindow。如果有人能详细解释如何在现实生活中使用这些场景,以及在AppDelegate中仅使用UIWindow的主要好处是什么,我将不胜感激

因为这篇文章没有解释太多

文档

您应该阅读Apple应用程序和环境文章,而不是UIScene文档。


解释

正如它所说的场景:

Scene,同时管理应用程序UI的多个实例,并将资源引导到UI的适当实例。

在iOS 13之前,我们只有一个场景,所以我们唯一需要同时运行ViewController的就是多个Window。但现在,每个应用程序都可以同时运行多个实例每个场景都有自己的状态,它可能在前台,而其他场景则在后台或处于暂停状态,而Window完全取决于应用程序本身。

假设我们有两个视图控制器(考虑没有场景(在设备的左侧和右侧运行,然后我们需要显示一个横幅。使用旧的窗口方法将在两个窗口上显示横幅!如果你需要选择一个,你可能会找到正确的控制器并在上面展示横幅,(我想我们所有人在熟悉UIWindow之前都做过这种方法(

因此,苹果推出了Scene,一个用于应用程序的每个单独实例的容器。因此,您可以分别管理每个应用程序,每个应用程序都像一个单独的应用程序。它有自己的windows和controllers。但所有这些都由一个对象UIApplication.shared管理,它有一个delegate来处理一般事件(通常来自应用程序外部(和整个应用程序生命周期。


最重要的是,场景设置了多窗口支持(目前仅在iPadOS和macOS上可用(。它对iOS上的SwiftUI设置也很有用。

SceneDelegate控制屏幕上显示的内容"以管理应用程序用户界面的一个实例中的生命周期事件",而AppDelegate则控制整个应用程序生命周期。

您还会注意到keyWindow不再适用于iOS。iOS很可能会支持多窗口,但这只是猜测。

希望这能澄清一些事情,让你了解苹果为什么要更新实现。

本文提供了一些关于SceneDelegate的更多数据,您可能会发现这些数据很有用:https://www.donnywals.com/understanding-the-ios-13-scene-delegate/

相关内容

  • 没有找到相关文章

最新更新