Xcode11之后新创建的工程会多出两个文件SceneDelegate.那么我们如何让它变回之前的那样的工程呢. 一....OC 版本 1.先直接删除SceneDelegate.h/.m文件 2.在AppDelegate.h添加@property (strong, nonatomic) UIWindow * window;属性...Swift 版 1.先直接删除SceneDelegate.swift文件 2.修改AppDelegate.swift文件:注释或删除UISceneSession的生命周期函数,最终代码如下: 3.最后在
好久之前跟新到Xcode11,跟新完成后打开以前老项目并未有什么太大变化,也就没有在意,今天新建一个项目,创建完成后,发现多了个SceneDelegate的.m和.h文件,这是什么鬼?它有什么用呢?...新创建项目目录 AppDelegate和SceneDelegate是iPadOS带来的新的多窗口支持的结果,并且有效地将应用程序委托的工作分成两部分。...AppDelegate处理App生命周期和UI生命周期; iOS13以后:处理 App 生命周期和新的 Scene Session 生命周期,在AppDelegate.h文件中没有了window属性,而是在SceneDelegate...中,可见AppDelegate不管理window而是交给SceneDelegate。...1.SceneDelegate中添加@available(iOS 13, *); 2.AppDelegate中同样声明window属性,代码: - (BOOL)application:(UIApplication
背景 Xcode 11之后新建工程,默认为有SceneDelegate,但是SceneDelegate是从iOS 13之后才有的,如果最低兼容版本到iOS 13以下,需要怎么做呢?...过程 首先来看一下,SceneDelegate是什么,为什么会有SceneDelegate 官方说明: A UISceneSession object manages a unique runtime...翻译解释: 在iOS 13(及以后版本)上,SceneDelegate将负责AppDelegate的某些功能。 最重要的是,window(窗口)的概念已被scene(场景)的概念所代替。...一种是直接把SceneDelegate相关的删除 b....import UIKit @available(iOS 13, *) class SceneDelegate: UIResponder, UIWindowSceneDelegate { xxx
一、SceneDelegate介绍 1)、Window与Scene iOS13以后,SceneDelegate将负责AppDelegate的某些功能。...2)、SceneDelegate三处新增内容 iOS13以后,Xcode新建iOS项目中有增加三处新增内容: 1> 添加一个新的类SceneDelegate 新增SceneDelegateClass 2...三处新增内容详解 1)、SceneDelegate类 SceneDelegate和AppDelegate中方法名相似, 是任何应用程序生命周期都会调用方法。...三、SceneDelegate适配 从iOS13开始AppDelegate不再有window属性,window属性被定义在SceneDelegate中。...SceneDelegate类中实现代码,如下 //SceneDelegate.swift import UIKit import SwiftUI class SceneDelegate: UIResponder
UISceneDelegateClassName $(TARGET_NAME).SceneDelegate...connectingSceneSession.role) } 从API_AVAILABLE(ios(13.0))的attribute可知这个会在iOS13才会调用,我们做好版本兼容即可 ③ 新建的SceneDelegate....m文件 #import "SceneDelegate.h" #import "LoginViewController.h" @interface SceneDelegate() @end @implementation...SceneDelegate -(void)scene:(UIScene *)scene willConnectToSession:(UISceneSession *)session options:(...UIScene 在这个为了对以前的代码的支持我们依然给AppDelegate一个window,但是这个已经不是之前项目那个widow那么简单啦 Swift版本我们就不详细说了代码逻辑依然是OC的 class SceneDelegate
window] -[SceneDelegate setWindow:] -[SceneDelegate window] -[SceneDelegate window] -[SceneDelegate...scene:willConnectToSession:options:] -[SceneDelegate window] -[SceneDelegate window] -[SceneDelegate...window] -[ViewController viewDidLoad] -[SceneDelegate sceneWillEnterForeground:] -[SceneDelegate...window] -[SceneDelegate setWindow:] -[SceneDelegate window] -[SceneDelegate window] -[SceneDelegate...scene:willConnectToSession:options:] -[SceneDelegate window] -[SceneDelegate window] -[SceneDelegate
didFinishLaunchingWithOptions:] 5 us -[AppDelegate application:configurationForConnectingSceneSession:options:] 63 us -[SceneDelegate...window] 0 us -[SceneDelegate setWindow:] 0 us -[SceneDelegate window] 0 us -[SceneDelegate window...] 0 us -[SceneDelegate scene:willConnectToSession:options:] 0 us -[SceneDelegate window] 0 us -[SceneDelegate...window] 0 us -[SceneDelegate window] 0 us -[ViewController viewDidLoad] 0 us -[SceneDelegate sceneWillEnterForeground...:] 0 us -[SceneDelegate sceneDidBecomeActive:] 0 us -[SceneDelegate window] 0 us -[SceneDelegate window
Xcode 11发布之后,新建iOS项目工程时,会有很多变化,最大的变化是多了文件SceneDelegate,此时如果希望通过纯代码设置界面,流程与以往会有一些不一样,本文简单介绍一下。...SceneDelegate.swift文件负责管理应用程序的生命周期。...保留SceneDelegate AppDelegate中通过application(_:configurationForConnecting:options)返回一个UISceneConfiguration...实例 完成启动后,控制权被交接给 SceneDelegate,它的 scene(_:willConnectTo:options:)将会被调用,设置window的根视图控制器 func scene(_ scene...makeKeyAndVisible() } 不保留SceneDelegate 删除SceneDelegate.swift 删除info.plist中的如下内容 ?
window] -[SceneDelegate setWindow:] -[SceneDelegate window] -[SceneDelegate window] -[SceneDelegate...scene:willConnectToSession:options:] -[SceneDelegate window] -[SceneDelegate window] -[SceneDelegate...viewDidLoad] -[SceneDelegate window] -[SceneDelegate window] -[SceneDelegate window] -[SceneDelegate...scene:willConnectToSession:options:] -[SceneDelegate window] -[SceneDelegate window] -[SceneDelegate...viewDidLoad] _test _block_block_invoke -[SceneDelegate sceneWillEnterForeground:] -[SceneDelegate
to release any resources that were specific to the discarded scenes, as they will not return. } 3、删除SceneDelegate.h...和SceneDelegate.m文件 4、删除Info.plist中的Application Scene Manifest 截屏2021-08-30 09.27.21.png 5、修改applicationdidFinishLaunchingWithOptions
项目文件.png AppDelegate.swift — 它负责App的启动与终止,并负责与SceneDelegate交接。...SceneDelegate.swift — 它负责管理应用程序的生命周期。 ContentView.swift — 最重要,在该文件中进行 UI 界面的编写。...AppDelegate中通过application(_:configurationForConnecting:options)返回一个UISceneConfiguration实例 完成启动后,控制权被交接给 SceneDelegate...在SceneDelegate.swift中会看到这样的代码: //创建window let window = UIWindow(windowScene: windowScene) //设置window的
委托给SceneDelegate。...SceneDelegate window 生命周期 class SceneDelegate: UIResponder, UIWindowSceneDelegate { var window: UIWindow...@main AppDelegate —> SceneDelegate。 显示 Main.storyboard 中初始化的控制器。 Storyboard介绍 容器概念。...AppDelegate —> SceneDelegate 在 SceneDelegate 的willConnectToSession中纯代码初始化 UIWindow,并设置显示的第一个控制器。
tabBarController: UITabBarController, displayOrderDidChangeFor group: UITabGroup) { print(#function) }}SceneDelegate...import UIKitclass SceneDelegate: UIResponder, UIWindowSceneDelegate { var window: UIWindow?
题外话:当我们用 Xcode11 创建项目,我们会发现项目结构发生了变化,window 从 AppDelegate 移到 SceneDelegate 中。...那么如何获取 SceneDelegate 中的 window 呢,代码如下 // 这里就简单介绍一下,实际项目中,如果是iOS应用这么写没问题,但是对于iPadOS应用还需要判断scene的状态是否激活...SceneDelegate scene?.window?.
如果Life Cycle选择了SwiftUI App,那么 Xcode 将自动创建一个与项目同名的Swift文件,它将用于引导应用程序呈现初始用户界面,从而取代旧的AppDelegate.swift和SceneDelegate.swift
截屏2020-07-08 17.24.05.png 第四步 删除SceneDelegate文件 ?
options:(UISceneConnectionOptions *)connectionOptions { [self initUI]; } 四·创建基础框架 属性: @interface SceneDelegate
previews: Self.Previews { get } 还是个static变量,从而我们可以臆断这个就是渲染的主要地方和实现 接下来我们看看怎么在开发中使用 在使用之前我们会发现多了个类 SceneDelegate
CPDFView(frame: view.bounds) pdfView.document = document view.addSubview(pdfView) }}SceneDelegate...示例代码import UIKitclass SceneDelegate: UIResponder, UIWindowSceneDelegate { var window: UIWindow?
SceneDelegate 更新 Apple 建议我们把视图层级相关的方法从 didFinishLanchingWithOptions 迁移到 SceneDelegate 中的 willConnectTo
领取专属 10元无门槛券
手把手带您无忧上云