[英]Conditionally include macOS-only code in a SwiftUI (Mac Catalyst) project?
我正在编写一个在 iOS 和 macOS 上运行的应用程序,使用带有 Swift 的 Mac Catalyst。
我想设置一个仅在 macOS 上可用的属性,但我找不到使用#available
或@available
来阻止编译器在 iOS 构建中包含这行代码的方法:
此语法不起作用,因为强制性尾随*
包括所有 iOS 版本。
if #available(macCatalyst 13.0, *) {
view.showsZoomControls = true
}
我尝试使用iOS 999
添加 iOS 的废话版本,但这也不起作用,因为该属性在 iOS 中被标记为严格不可用。
使用@available
有一个简单的语法 using introduced:
允许指定每个操作系统的版本,并且每个操作系统都需要一个单独的@available
条目,但我看不到任何使用它的方法。 看来您不能在代码块上使用@available
。
真的没有理智的方法吗?
作为参考,此特定属性的定义是:
@property (nonatomic) BOOL showsZoomControls
API_AVAILABLE(macos(10.9), macCatalyst(13.0))
API_UNAVAILABLE(ios, watchos, tvos);
避免了危机 - 似乎available
的锤子不适合这颗钉子。
现在对我有用的是简单得多:
#if os(macOS)
view.showsZoomControls = true
#endif
您可以使用目标环境识别/限制 Mac Catalyst
#if targetEnvironment(macCatalyst)
view.showsZoomControls = true
#endif
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.