Pau*_* T. 15 iphone ios swift uiscenedelegate uiscene
在我们都习惯之前,AppDelegate
我们创建UIWindow
并rootViewController
为此设置的方法Window
。有时,当我们需要自定义警报时,我们可以创建一个新的警报UIWindow
。
现在 Xcode 会根据这个场景自动创建UIScene
和创建UIWindow
。我将不胜感激,如果有人能详细解释如何在现实生活中使用这个场景,什么是他们的主要受益于仅使用UIWindow
在AppDelegate
因为这篇文章没有解释太多
小智 6
最重要的是场景设置了多窗口支持(目前仅在 iPadOS 和 macOS 上可用)。它对于 iOS 上的 SwiftUI 设置也很有用。
SceneDelegate 控制屏幕上显示的内容“以管理应用程序用户界面的一个实例中的生命周期事件”,而 AppDelegate 控制整个应用程序生命周期。
您还会注意到keyWindow
iOS 版不再存在。iOS 很可能会支持多窗口,但这只是目前的猜测。
希望这能澄清一些事情,并让您了解 Apple 更新实施的原因。
本文提供了一些有关 SceneDelegate 的更多数据,您可能会觉得有用:https ://www.donnywals.com/understand-the-ios-13-scene-delegate/
你应该阅读应用与环境文章来自苹果,而不是UIScene
文件。
正如它所说的场景:
场景,同时管理应用程序 UI 的多个实例,并将资源定向到 UI 的适当实例。
在 iOS 13 之前,我们只有一个场景,所以我们唯一需要ViewController
同时运行s 的是多个Window
s 相互叠加。但是现在,每个应用程序可以同时运行多个实例!每个场景都有自己的状态,它可能在前台,而其他场景在后台或暂停,而Window
完全取决于应用程序本身。
想象一下,我们有 2 个视图控制器(假设没有场景)在设备的左侧和右侧运行,然后我们需要显示一个横幅。使用旧的窗口方法将在它们两个上显示横幅!如果您需要选择一个,您最终可能会找到正确的控制器并在其上展示横幅,(我认为我们所有人在熟悉之前都做过这种方法UIWindow
)
所以苹果引入Scene
了一个容器,用于应用程序的每个单独实例。因此,您可以单独管理每一个,并且每个都像一个单独的应用程序一样。它有自己的window
s 和controller
s。但它们都由单个对象管理,UIApplication.shared
它有一个delegate
处理一般事件(通常来自应用程序外部)和整个应用程序生命周期的功能。