我正在开发一个适用于iOS的库,需要知道使用该库的应用是否在运行SwiftUI,以便我可以适当地处理事务。
在Objective-C中有没有一种程序化的方式可以找出这个问题呢?
我正在开发一个适用于iOS的库,需要知道使用该库的应用是否在运行SwiftUI,以便我可以适当地处理事务。
在Objective-C中有没有一种程序化的方式可以找出这个问题呢?
最终我做了这个。
获取应用程序的根或关键窗口。
检查其类名是否包含“UIHostingController”。
还要对此进行nil检查:NSClassFromString(@“SwiftUI._UIGraphicsView”)
您还可以检查其他Swift UI类,但到目前为止,这已经涵盖了所有情况。
UIViewRepresentable
或UIViewControllerRepresentable
,请将日志记录代码放在那里。 - YonatrootViewController
是否为UIHostingController
类型。(注意:我不确定如何做到这一点。)UIKit应用通常有一个Storyboard,但很容易移除。此外,对于UIKit应用程序,info.plist
中有一个名为UIMainStoryboardFile
的键 - 但同样,我不确定这是否像检查UIHostingController
那样可靠。而且请记住,在Xcode 12中可能会发生变化。 - user7014451