【问题标题】:How to detect SwiftUI usage programmatically in an iOS application如何在 iOS 应用程序中以编程方式检测 SwiftUI 的使用情况
【发布时间】:2019-10-11 07:15:05
【问题描述】:

我正在为 iOS 开发一个库,我需要知道使用该库的应用程序是否正在运行 SwiftUI,以便我可以适当地处理事情。

有没有办法在 Objective-C 中以编程方式找出这个问题?

【问题讨论】:

  • 您在代码中使用什么取决于外部用户的语言?
  • 我们产品的一些功能在 swift UI 中还不能工作,所以我想记录一条消息,告诉用户 SwiftUI 被检测到并且并非所有功能都可以工作。此外,我们有时会在应用程序中显示一个叠加层,如果我检测到 swiftui,我希望最终显示一个 swiftui 叠加层。
  • 另外,我不是在问语言,我是在专门询问 UI 框架“SwiftUI”,而不仅仅是 swift 语言
  • 如果您使用的是UIViewRepresentableUIViewControllerRepresentable,则将日志记录代码放在那里。
  • 我认为最可靠的方法是检查rootViewController 是否属于UIHostingController 类型。 (注意:我不知道该怎么做。) UIKit 应用程序通常有一个情节提要,但很容易删除。此外,UIKit 应用程序的info.pist 有一个UIMainStoryboardFile 的密钥——但同样,我不确定这是否与检查UIHostingController 一样可靠。请记住,Xcode 12 来了,这可能会改变。

标签: ios objective-c swiftui


【解决方案1】:

最后我做到了。

  1. 获取应用程序的根或关键窗口。

  2. 检查它的类名是否包含“UIHostingController”

  3. 对此也没有检查:NSClassFromString(@"SwiftUI._UIGraphicsView")

您还可以检查其他 swift ui 类,但目前已涵盖所有情况。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-09-01
    • 2012-04-11
    • 2014-09-09
    • 2012-03-14
    • 2019-02-27
    • 2013-12-10
    相关资源
    最近更新 更多