UIScene概念不清楚

Pau*_* T. 15 iphone ios swift uiscenedelegate uiscene

在我们都习惯之前,AppDelegate我们创建UIWindowrootViewController为此设置的方法Window。有时,当我们需要自定义警报时,我们可以创建一个新的警报UIWindow

现在 Xcode 会根据这个场景自动创建UIScene和创建UIWindow。我将不胜感激,如果有人能详细解释如何在现实生活中使用这个场景,什么是他们的主要受益于仅使用UIWindowAppDelegate

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

小智 6

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

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

您还会注意到keyWindowiOS 版不再存在。iOS 很可能会支持多窗口,但这只是目前的猜测。

希望这能澄清一些事情,并让您了解 Apple 更新实施的原因。

本文提供了一些有关 SceneDelegate 的更多数据,您可能会觉得有用:https ://www.donnywals.com/understand-the-ios-13-scene-delegate/


Moj*_*ini 5

文档

你应该阅读应用与环境文章来自苹果,而不是UIScene文件。


说明

正如它所说的场景

场景,同时管理应用程序 UI 的多个实例,并将资源定向到 UI 的适当实例。

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

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

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