在 iOS 13 中推送 UIViewController 会导致其与状态栏重叠

2024-04-30

请注意,该项目是在 Xcode 10 中创建的。我最近升级到 Xcode 11,发生了这种情况。

我有一个 UINavigationController 来推动视图控制器。 初始视图控制器看起来不错。但是当我通过推动另一个视图控制器来连接它时,第二个视图控制器与状态栏重叠。这只发生在 iOS 13 中。 我在模拟器上测试过。使用 Xcode 11。

导航栏的可见性被隐藏。

将演示文稿设置为全屏或当前上下文具有相同的结果。好像超出了安全区域,但我把它设置在安全区域以下。

我使用以下方法进行转换:

self.navigationController?.performSegue(withIdentifier: "myAlertsSegue", sender: self)

这个项目是在 Xcode 10 中创建的。我在更新到 Xcode 11 后遇到了这个问题。 如果我在Xcode 11中创建一个新项目,似乎没有问题。我猜我有迁移问题。

以下是一些屏幕截图:

初始视图控制器:

查看控制器2:

故事板设置:

Segue 属性检查器:

视图控制器 2 属性检查器

Update我所做的解决方法是将每个视图控制器嵌入到导航控制器中。它解决了问题,但过渡并不顺利,因为我无法推动导航控制器。我必须介绍它们。我不知道为什么 iOS 13 会出现这种情况。

Update我自己找到了答案。看看下面是否对你有帮助。


我找到了我自己问题的答案。 我尝试在 Xcode 11 中创建一个新项目,以查看与 Xcode 10 中创建的项目相比的差异。 这些差异与仅在 iOS 13 中可用的 UISceneSession 有关。 我希望这个答案可以帮助所有和我遇到同样问题的人。

这里的差异:

  • UISceneSession 中的生命周期AppDelegate.swiftUISceneSession 有一些方法。将这些行添加到AppDelegate.swift.
// MARK: UISceneSession Lifecycle

    @available(iOS 13.0, *)
    func application(_ application: UIApplication, configurationForConnecting connectingSceneSession: UISceneSession, options: UIScene.ConnectionOptions) -> UISceneConfiguration {
        // Called when a new scene session is being created.
        // Use this method to select a configuration to create the new scene with.
        return UISceneConfiguration(name: "Default Configuration", sessionRole: connectingSceneSession.role)
    }

    @available(iOS 13.0, *)
    func application(_ application: UIApplication, didDiscardSceneSessions sceneSessions: Set<UISceneSession>) {
        // Called when the user discards a scene session.
        // If any sessions were discarded while the application was not running, this will be called shortly after application:didFinishLaunchingWithOptions.
        // Use this method to release any resources that were specific to the discarded scenes, as they will not return.
    }
  • SceneDelegate.swift

这是一个要创建的新类。

import UIKit

@available(iOS 13.0, *)
class SceneDelegate: UIResponder, UIWindowSceneDelegate {

    var window: UIWindow?


    func scene(_ scene: UIScene, willConnectTo session: UISceneSession, options connectionOptions: UIScene.ConnectionOptions) {
        // Use this method to optionally configure and attach the UIWindow `window` to the provided UIWindowScene `scene`.
        // If using a storyboard, the `window` property will automatically be initialized and attached to the scene.
        // This delegate does not imply the connecting scene or session are new (see `application:configurationForConnectingSceneSession` instead).
        guard let _ = (scene as? UIWindowScene) else { return }
    }

    func sceneDidDisconnect(_ scene: UIScene) {
        // Called as the scene is being released by the system.
        // This occurs shortly after the scene enters the background, or when its session is discarded.
        // Release any resources associated with this scene that can be re-created the next time the scene connects.
        // The scene may re-connect later, as its session was not neccessarily discarded (see `application:didDiscardSceneSessions` instead).
    }

    func sceneDidBecomeActive(_ scene: UIScene) {
        // Called when the scene has moved from an inactive state to an active state.
        // Use this method to restart any tasks that were paused (or not yet started) when the scene was inactive.
    }

    func sceneWillResignActive(_ scene: UIScene) {
        // Called when the scene will move from an active state to an inactive state.
        // This may occur due to temporary interruptions (ex. an incoming phone call).
    }

    func sceneWillEnterForeground(_ scene: UIScene) {
        // Called as the scene transitions from the background to the foreground.
        // Use this method to undo the changes made on entering the background.
    }

    func sceneDidEnterBackground(_ scene: UIScene) {
        // Called as the scene transitions from the foreground to the background.
        // Use this method to save data, release shared resources, and store enough scene-specific state information
        // to restore the scene back to its current state.
    }


}
  • 最后,将其添加到 Info.plist
<key>UIApplicationSceneManifest</key>
    <dict>
        <key>UISceneConfigurations</key>
        <dict>
            <key>UIWindowSceneSessionRoleApplication</key>
            <array>
                <dict>
                    <key>UISceneClassName</key>
                    <string></string>
                    <key>UISceneDelegateClassName</key>
                    <string>$(PRODUCT_MODULE_NAME).SceneDelegate</string>
                    <key>UISceneConfigurationName</key>
                    <string>Default Configuration</string>
                    <key>UISceneStoryboardFile</key>
                    <string>Main</string>
                </dict>
            </array>
        </dict>
        <key>UIApplicationSupportsMultipleScenes</key>
        <false/>
    </dict>

另外,请注意,当移动到另一个故事板时,您可能需要设置modalPresentationStyle = .fullScreen.

清理并构建。希望这可以帮助。如果对您有用,请投票。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 iOS 13 中推送 UIViewController 会导致其与状态栏重叠 的相关文章

  • 删除派生数据文件夹后,Xcode 不断重新创建派生数据文件夹

    自动完成功能在 Xcode 6 中不再起作用 我四处搜索 发现删除派生数据文件夹可以解决此问题 每次我删除它时 它都会回来 然后就不会再自动完成了 有什么建议么 Thanks 没关系 我解决了这个问题 我没有声明需要在类内的方法中使用的变量
  • HTML 分页

    有没有html分页的开源项目 我正在为 iPhone 开发一个应用程序 我想在 UIWebView 上显示 HTML 文件 并且不希望用户向下滚动以查看屏幕上未显示的剩余内容 我想在第二个 UIWebView 上显示剩余的内容 我怎样才能做
  • 通过 renderInContext 定位要绘制的视图:

    我想画一个UIView在我目前的CGGraphicsContext 我画的是UIView via renderInContext 但它的位置不正确 始终位于左上角 我拥有所有的价值观UIView可用于绘制UIView CGRect fram
  • 核心数据对多关系。它们是延迟加载吗?

    我在核心数据 适用于 iPhone 中有典型的模型 其中包含部门和员工 部门 gt gt 员工 我不想每次加载时都加载一个部门的所有员工 所以我想将员工创建为获取的属性 我想我可以定义一些像这样的谓词 employee deparmentI
  • 为 iOS 应用程序加载基于 SVG 的图像资源

    我从 thenounproject 购买了一个图标作为 SVG 图像 然后我使用一个名为的 macOS 程序Gapplin http gapplin wolfrosch com 将此 SVG 导出为 PNG 图像 它显示为 100x100
  • 如何在iOS的Delphi程序中使用IPv6协议

    我尝试在我的移动程序中使用 IPv6 协议 我的服务器位于 NAT 后面的 LAN 内 在服务器上我使用IP端口3000 我已经组织了从路由器端口 45500 到服务器端口 3000 的虚拟服务器 端口转发 在服务器上 我运行 ipconf
  • 从 Mac 命令行访问 iOS 应用程序目录(沙箱)

    我需要使用 Mac 或 Linux 上的命令行 非 GUI 访问 iOS 设备上安装的应用程序的沙箱目录 这有助于开发和测试自动化 将 json 文件放入沙箱中可以让我设置参数 例如额外的调试消息和更小的刷新间隔 像 iFunBox 这样的
  • iPhone/Objective-C - 呈现视图和委托时的 UIDocumentInteractionController 类参考

    我在用UIDocumentInteractionController在我的应用程序中 以便在我的应用程序中呈现 Instagram 过滤器屏幕 如下所述 http instagram com developer iphone hooks h
  • 以编程方式从底部裁剪图像

    我正在开发自定义相机应用程序 一切进展顺利 但我在从底部裁剪图像时遇到了问题 即 裁剪后的图像与原始图像具有完全相同的宽度 但高度将为原始图像的 1 3 并且必须从底部开始 斯威夫特3解决方案 func cropBottomImage im
  • NSTimer 不触发选择器

    在带有 ARC 的 ios5 0 中 在我的 rootviewcontroller 中 我调用由应用程序委托持有的安全管理器对象中的方法 在该方法中 我设置计时器如下 NSTimer timer NSTimer scheduledTimer
  • 如何用图片替换UITableView?

    我有一个 UITableView 默认为空白 直到用户编辑并向其添加数据 我想显示一张带有说明的图像 直到用户编辑它为止 图片的大小非常适合导航栏和标签栏之间 有没有办法以编程方式执行此操作 您可以使用removeFromSuperview
  • 在 swift 中将简单字符串转换为 JSON 字符串

    我知道有一个同标题的问题here https stackoverflow com questions 30825755 convert string to json string in swift 但在那个问题中 他试图将字典转换为 JSO
  • 是否为 Core Data 的获取结果控制器实现委托

    实现四种委托方法有什么好处 void controllerWillChangeContent NSFetchedResultsController 控制器 void 控制器 NSFetchedResultsController 控制器 di
  • 可以获取位置,但无法获取航向

    我目前只使用模拟器 但我在 iOS 模拟器上快速使用 CoreLocation 时遇到问题 我得到此代码打印的位置更新 但从未得到标题 我不想当然 我正在尝试制作一个指南针类型的应用程序 它将显示目标的方位 class CompassVie
  • NSCFData fastCharacterContents 崩溃? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 我目前在控制台中收到此崩溃日志 20
  • 以编程方式在 App Store 上运行搜索?

    是否可以从我的应用程序中打开 App Store 应用程序并运行搜索 我想看看是否有一个 appstore 类型的 URL 可以使用 就像 mailto 和 sms 分别打开邮件和短信一样 有谁知道这是否可能 编辑 更多信息 我一直在尝试使
  • NSManagedObject 的 Xcode 9 构建问题:Date 与 NSDate

    Xcode 9 生成不同的代码Date模拟器与设备中实体的类型属性 我有codegen功能下Class set to category extension在核心数据中 直到 Xcode 8 3 最新 一切都工作正常 NSDate总是 下面是
  • AWS S3 公共对象与私有对象?

    回到 S3 我的存储桶中有图像的 URL 我将在我的应用程序中呈现这些图像 但它们被设置为私有 当我尝试单击该链接时 它显示 访问被拒绝 当我将链接的设置更改为公共时 它会通过 但是我读到公共访问并不是最安全的事情 所以这本质上是一个由两部
  • iOS 视图控制器内存在被关闭后未释放

    当用户单击按钮时 它会显示一个带有两个视图控制器的新选项卡栏视图控制器 我是这样做的 ACLevelDownloadController dvc ACLevelDownloadController alloc initWithNibName
  • 设置/覆盖 UICollectionView 中单元格之间的填充

    我有一个 UICollectionView 但在获取单元格之间的填充时遇到了问题 理论上 我应该能够将屏幕除以 4 并且我可以获得包含 4 个图像的单元格大小 完美地占据屏幕宽度 但是 它选择不这样做 相反 它会创建 3 个具有巨大填充的图

随机推荐

  • 具有 StateT[IO, _, _] 的 FS2 Stream,定期转储状态

    我有一个消耗无限数据流的程序 在此过程中 我想记录一些指标 这些指标形成一个幺半群 因为它们只是简单的求和和平均值 我想定期在某处写下这些指标 清除它们 然后返回累积它们 我基本上有 object Foo type MetricsIO A
  • 使用线程反转字符串

    最近 在一次面试中 我被要求使用线程实现一个字符串反转功能 我想出了下面解决方案的大部分内容 被选中与否是另一回事 我尝试在运行 Windows 8 Consumer Preview 的家用电脑上运行以下解决方案 编译器是VC11 Beta
  • 智能指针的三法则?

    我对将 三法则 与智能指针一起使用感到有点困惑 如果我有一个类 其唯一的数据成员是智能指针 我是否需要显式定义析构函数 复制构造函数和赋值运算符 我的理解是 由于智能指针将自动处理资源 所以我不需要显式定义析构函数 因此我不需要根据三规则为
  • 使用 .NET Core 操作图像

    我已将我的项目从 NET 4 5 更新到 NET Core 使用 ASP NET Core 我在以前的版本中有一些非常简单的代码 使用了位图对象System Drawing调整图像大小 我认为System Drawing不能在 NET Co
  • 你现在在做MDA(模型驱动架构)吗?如果是这样,您使用什么工具,效果如何?

    模型驱动架构是这样一种想法 您创建模型 以一种不依赖任何 或至少大多数 实现技术的方式表达您需要解决的问题 然后为一个或多个特定平台生成实现 人们声称 在更高的抽象级别上工作更加强大和高效 此外 您的模型比技术更长寿 因此 当您的第一语言
  • 将 Grails 应用程序移植到 GAE

    我目前正在评估一个 Grails 应用程序是否移植到 Google App Engine 我想了解以下方面的经验 Acegi 安全性 应用程序依赖此库来增强安全性 更新 刚刚了解到它基于 hibernate 因此无法移植 有推荐的替代品吗
  • 通话过程中是否可以拦截语音数据?

    我计划开发 Android 应用程序 对语音数据进行加密 解密 以便各方可以使用安全通道进行通信 那么问题来了 GSM通话时如何拦截语音 音频数据 可能还是不可能 我应该使用 Android NDK 还是其他东西 在 GSM 中 由于信道特
  • 是否可以在执行时查看对对象的所有引用?

    有没有办法查看执行时对某个对象的所有引用 我正在使用 Netbeans 其中是否存在此功能 编辑 使用探查器来执行此操作没有问题 我只需要知道引用 无论如何 好的 Netbeans 显示了对一个对象的所有引用 首先 以调试模式运行项目CTR
  • 如何从js获取zk元素id

    我正在使用 ZK 我想从 js 获取 zk 元素的 id 我使用了不同的方式 像原生 html 一样声明组件 它从 js 获取 id 但它不正确 我已经使用 ZK 的 html 标签声明了该元素 但也不正确 我已经看到了一些像 Compon
  • 可以跳过“不返回”吗?

    我想知道跳过是否是一种不好的方式return None 当不需要时 Example def foo1 x if some condition return Baz x else return None def foo2 x if some
  • 适用于 Visual Studio 2013 的水晶报表 8

    有什么办法可以在 Visual Studio 2013 上运行 Crystal Reports 8 我有一个使用 VS2008 Crystal Reports 8 构建的 Vb Net 项目 现在我正在运行 Visual Studio 20
  • 使用 AFNetworking 发送多张图像

    我正在开发一款消息应用程序 用户还可以互相发送图片 当用户发送多张图片时 我会并行发送它们 在发送第二张图片之前 我不会等待第一张图片完成上传 搬到之前AFNetworking我成功地做到了这一点ASIFormDataRequest 事实上
  • 如何在 Angular 2 中添加表单验证模式?

    我有一个简单的表单 需要验证输入的开头和结尾是否不是空格 在 HTML5 中 我将这样做
  • 如何根据最短距离为经纬度观测值指定名称

    我有两个数据框 df1包含带有经纬度坐标的观测值 df2具有带有纬度坐标的名称 我想创建一个新变量df1 name每个观察值的名称df2到该观测值的距离最短 一些示例数据df1 df1 lt structure list lat c 52
  • 解析对象或对象数组的 JSON 键

    在 Moshi 中 是否可以创建一个类型适配器来解析同一类型的对象或对象列表 例如 有时 JSON 是 person 其他时候是 person 理想情况下 我希望有一个如下所示的 Java 对象 class PersonContainer
  • PyFile_Type 替换为 ..?

    我正在尝试编译Yenc https bitbucket org dual75 yenc对于Python 3 2 我注意到 gcc 抱怨未声明的函数PyString Type 所以我用它的替代品替换了它PyBytes Type正如根据文档 h
  • 如何使用 Visual Studio + ReSharper 禁用不需要的自动完成?

    我正在使用 Visual Studio 2010 和 ReSharper 5 我在 cs 文件的顶部定义了它 if X86 using size t System Int32 else using size t System Int64 e
  • 如何使用 java 开始编码和设置 Web 服务器?

    所以现在我想我已经学习了java的所有基础知识和术语 但我不知道如何使用 Java 中的 Netbeans 编码和显示网页 大多数教程包含大量关于不同技术的讨论 Java 使用 Java Beans JSP 和 servlet 等 我在哪里
  • Laravel 中的魔法方法

    所以我最近意识到 而不是使用 users User all return view home gt with users users 你有能力做到 return view home gt withUsers users 我相信这些被称为 神
  • 在 iOS 13 中推送 UIViewController 会导致其与状态栏重叠

    请注意 该项目是在 Xcode 10 中创建的 我最近升级到 Xcode 11 发生了这种情况 我有一个 UINavigationController 来推动视图控制器 初始视图控制器看起来不错 但是当我通过推动另一个视图控制器来连接它时