最近涉足了一点 Catalyst 跨平台的内容,基本需要贯穿开发流程的一个工具方法是:判断当前 APP 的运行环境是否为 Catalyst(即 UIKit on macOS)。
常规的思路此时已经无用,例如使用 UIDevice.current.userInterfaceIdiom
:
switch UIDevice.current.userInterfaceIdiom {
case .pad:
/// iPadOS / macOS + Catalyst Stuff
default:
/// Other Platforms
}
在 iPadOS 和 macOS 平台运行时,属性均为 .iPad
,无法做细致的区分。
因此,我们需要使用下面的 #if targetEnvironment
来做判断:
func isCatalyst() -> Bool {
#if targetEnvironment(macCatalyst)
return true
#else
return false
#endif
}