簡體   English   中英

UIScene 概念不清楚

[英]UIScene concept is not clear

在我們都習慣在AppDelegate中的方法之前,我們創建UIWindow然后為此Window rootViewController 有時當我們需要自定義警報時,我們可以在上面創建一個新的UIWindow

現在 Xcode 會自動創建UIScene並根據這個場景創建UIWindow 如果有人能詳細解釋如何在現實生活中使用這些場景,以及在AppDelegate中僅使用UIWindow的主要好處是什么,我將不勝感激

因為這篇文章解釋的不多

文檔

您應該閱讀AppleApp and Environment 文章,而不是UIScene文檔。


解釋

正如它所說的場景

場景,同時管理應用程序 UI 的多個實例,並將資源定向到適當的 UI 實例。

在 iOS 13 之前我們只有一個場景,所以我們唯一需要同時運行ViewController的就是多個Window相互疊加。 但是現在,每個應用程序都可以同時運行多個實例! 每個場景都有自己的 state,它可能在前台,而其他場景在后台或暫停,而Window完全取決於應用程序本身。

假設我們有 2 個視圖控制器(假設沒有場景)在設備的左側和右側運行,然后我們需要顯示一個橫幅。 使用舊的 window 方法會在它們兩個上顯示橫幅,如果你需要選擇一個,你最終可能會找到正確的 controller 並在上面展示橫幅,(我想我們所有人在熟悉之前都做過這個方法UIWindow

因此,蘋果引入了Scene ,它是應用程序每個單獨實例的容器。 因此,您可以單獨管理每一個,並且它們中的每一個都像一個單獨的應用程序一樣。 它有自己的windowcontroller 但所有這些都由單個 object UIApplication.shared管理,它有一個delegate來處理一般事件(通常來自應用程序外部)和整個應用程序生命周期。


最大的一點是場景設置了多個 window 支持(目前僅適用於 iPadOS 和 macOS)。 它對於 iOS 上的 SwiftUI 設置也很有用。

SceneDelegate 控制屏幕上顯示的內容“以管理應用程序用戶界面的一個實例中的生命周期事件。”,而 AppDelegate 控制您的整個應用程序生命周期。

您還會注意到keyWindow不再存在 keyWindow。 iOS 很可能支持多個 window,但這是目前的猜測。

希望這可以澄清一些事情,並讓您了解 Apple 更新實施的原因。

本文提供了更多有關 SceneDelegate 的數據,您可能會覺得這些數據很有用: https://www.donnywals.com/understanding-the-ios-13-scene-delegate/

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM