如何在 iOS 应用程序中以编程方式检测 SwiftUI 的使用情况
Posted
技术标签:
【中文标题】如何在 iOS 应用程序中以编程方式检测 SwiftUI 的使用情况【英文标题】:How to detect SwiftUI usage programmatically in an iOS application 【发布时间】:2019-10-11 07:15:05 【问题描述】:我正在为 ios 开发一个库,我需要知道使用该库的应用程序是否正在运行 SwiftUI,以便我可以适当地处理事情。
有没有办法在 Objective-C 中以编程方式找出这个问题?
【问题讨论】:
您在代码中使用什么取决于外部用户的语言? 我们产品的一些功能在 swift UI 中还不能工作,所以我想记录一条消息,告诉用户 SwiftUI 被检测到并且并非所有功能都可以工作。此外,我们有时会在应用程序中显示一个叠加层,如果我检测到 swiftui,我希望最终显示一个 swiftui 叠加层。 另外,我不是在问语言,我是在专门询问 UI 框架“SwiftUI”,而不仅仅是 swift 语言 如果您使用的是UIViewRepresentable
或UIViewControllerRepresentable
,则将日志记录代码放在那里。
我认为最可靠的方法是检查rootViewController
是否属于UIHostingController
类型。 (注意:我不知道该怎么做。) UIKit 应用程序通常有一个情节提要,但很容易删除。此外,UIKit 应用程序的info.pist
有一个UIMainStoryboardFile
的密钥——但同样,我不确定这是否与检查UIHostingController
一样可靠。请记住,Xcode 12 来了,这可能会改变。
【参考方案1】:
最后我做到了。
获取应用程序的根或关键窗口。
检查它的类名是否包含“UIHostingController”
对此也没有检查:NSClassFromString(@"SwiftUI._UIGraphicsView")
您还可以检查其他 swift ui 类,但目前已涵盖所有情况。
【讨论】:
以上是关于如何在 iOS 应用程序中以编程方式检测 SwiftUI 的使用情况的主要内容,如果未能解决你的问题,请参考以下文章