1 SceneDelegate有什么用?可以删除吗?
- 在iOS 13(及以后版本)上,SceneDelegate将负责AppDelegate的某些功能。 最重要的是,window(窗口)的概念已被scene(场景)的概念所代替。 一个应用程序可以具有不止一个场景,而一个场景现在可以作为您应用程序的用户界面和内容的载体(背景)。
- 尤其是一个具有多场景的App的概念很有趣,因为它使您可以在iOS和iPadOS上构建多窗口应用程序。 例如,文档编辑器App中的每个文本文档都可以有自己的场景。 用户还可以创建场景的副本,同时运行一个应用程序的多个实例(类似多开)。
使用不习惯的可以删除,删除之后未发现和之前版本有不同之处
1、删除SceneDelegate文件;
2、删除AppDelegate文件中的application(_:configurationForConnecting:options:)和application(_:didDiscardSceneSessions:)方法
3、删除info.plist文件中的Application Scene Manifest字典
2 不删除也能达到之前效果
不删除的话,许多操作需要判断iOS13之后才能使用。方法解释:
// 当场景与app断开连接是调用(注意,以后它可能被重新连接)
- (void)sceneDidDisconnect:(UIScene *)scene {
}
// 用户开始与场景进行交互(例如从应用切换器中选择场景)时,会调用
- (void)sceneDidBecomeActive:(UIScene *)scene {
}
// 当用户停止与场景交互(例如通过切换器切换到另一个场景)时调用
- (void)sceneWillResignActive:(UIScene *)scene {
}
// 当场景变成活动窗口时调用,即从后台状态变成开始或恢复状态
- (void)sceneWillEnterForeground:(UIScene *)scene {
}
// 当场景进入后台时调用,即该应用已最小化但仍存活在后台中
- (void)sceneDidEnterBackground:(UIScene *)scene {
}
网友评论