“Scene support”是指iOS应用程序支持多个并行场景。这些场景可以显示在同一屏幕上,并允许用户同时使用多个窗口或视图控制器。为了支持场景,应用程序必须实现UISceneDelegate协议,并将每个场景配置为单独的窗口。
以下是一个简单的示例,演示如何在应用程序中使用场景。
首先,在SceneDelegate.swift中实现UISceneDelegate协议。
import UIKit
class SceneDelegate: UIResponder, UIWindowSceneDelegate {
var window: UIWindow?
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
guard let windowScene = (scene as? UIWindowScene) else { return }
window = UIWindow(windowScene: windowScene)
// Configure the scene.
let viewController = ViewController()
let navigationController = UINavigationController(rootViewController: viewController)
window?.rootViewController = navigationController
// Make the window visible.
window?.makeKeyAndVisible()
}
// Implement other UISceneDelegate methods as needed.
}
接下来,修改AppDelegate.swift以使用新的SceneDelegate。
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
return true
}
// Replace the default UIWindow creation method.
var window: UIWindow?
func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
}
// Implement other UIApplicationDelegate methods as needed.
// Add scene support.
func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set) {
}
}
最后,在Info.plist中添加支持场景的键值。