繁体   English   中英

在 SwiftUI (Mac Catalyst) 项目中有条件地包含仅限 macOS 的代码?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM