在我们习惯AppDelegate中的方法之前,我们先创建UIWindow,然后为这个Window设置rootViewController。有时,当我们需要一个自定义警报时,我们可以创建一个新的UIWindow,它将位于上面。
现在,Xcode会自动创建UIScene,并在这个场景上创建UIWindow。如果有人能详细解释如何在现实生活中使用这个场景,以及在AppDelegate中使用AppDelegate的主要好处是什么,我将不胜感激。
因为这个文章解释不了多少
发布于 2020-05-17 06:54:56
文献资料
您应该从Apple而不是UIScene文档中阅读UIScene。
解释
就像它说的关于场景
场景,同时管理应用程序UI的多个实例,并将资源定向到适当的UI实例。
在iOS 13之前,我们只有一个场景,所以我们需要同时运行ViewControllers的唯一东西是相互之间的多个Window。但是现在,每个应用程序可以有多个同时运行的实例!每个场景都有自己的状态,可能在前台,而其他的处于后台或挂起的,而Window完全依赖于应用程序本身。
假设我们有两个视图控制器(考虑没有场景)运行在设备的左边和右边,然后我们需要显示一个横幅。使用旧的窗口方法将在两个窗口上显示横幅!如果您需要选择一个,您可能最终会找到正确的控制器并在上面展示横幅(我认为我们都是在熟悉UIWindow之前就这样做的)
因此,苹果引入了Scene,这是该应用程序的每个单独实例的容器。因此,您可以分别管理每一个,其中每一个作为一个单独的应用程序。它有自己的window和controller,但它们都是由单个对象UIApplication.shared管理的,它有一个delegate来处理一般事件(通常来自应用程序之外)和整个应用程序生命周期。
发布于 2020-05-14 09:04:13
最大的问题是场景设置了多个窗口支持(目前只能在iPadOS和macOS上使用)。它对于在SwiftUI上安装iOS也很有用。
SceneDelegate控制屏幕上显示的内容,“在应用程序用户界面的一个实例中管理生命周期事件”,而AppDelegate控制整个应用程序生命周期。
您还会注意到,keyWindow不再存在于iOS中。iOS很可能会支持多个窗口,但这是目前的猜测。
希望这能澄清一些事情,并让你了解为什么苹果会更新这个实现。
本文提供了一些关于SceneDelegate的更多数据,您可能会发现这些数据是有用的:https://www.donnywals.com/understanding-the-ios-13-scene-delegate/
https://stackoverflow.com/questions/61649700
复制相似问题