为什么 `#Preview(_:traits:_:body:)` 仅在 iOS 17.0 中可用? [已关闭]

问题描述 投票:0回答:1

这个问题不是一个

Code
问题,但我认为它与编码和编程有关,并且遵循StackOverflow指南。

我通常使用

#Preview
,但我需要进行预览以适合我的视图,所以我这样做了:

#Preview(traits: .sizeThatFitsLayout)

但是我得到了:

🛑“预览(:traits::body:)”仅在 iOS 17.0 或更高版本中可用

正如一位 apple 工程师建议,我发现我可以使用

PreviewProvider
使其可用于 iOS 13,这是我的目标操作系统。

但这引发了我几个问题:

  1. #Preview
    难道不是
    PreviewProvider
    的另一种实现吗? 1.1 如果是,那么为什么它不支持旧版本。 1.2 如果不是,为什么?原版有问题吗
    PreviewProvider

  2. Preview
    不是适用于 Xcode 的吗?那么为什么它没有运行呢? Xcode 是否依赖于 iOS?

  3. 预览代码是否随应用程序一起提供?我应该使用

    #if DEBUG
    之类的东西来限制它吗?

抱歉,如果我无法很好地解释,并感谢您的耐心等待。 🙏🏻

swift xcode swiftui preview
1个回答
0
投票

您的问题代码问题。您正在询问名为

Preview
的 SwiftUI 宏(请参阅 Xcode 中的预览)。与任何 Swift API 一样,该 API 是在各种操作系统的特定版本中添加的。

较旧的

Preview(_:body:)

 是从 iOS 13.0/macOS 10.15 开始添加的。但从 iOS 17.0/macOS 14.0 开始添加了较新的 Preview(_:traits:_:body:)
。正如您所看到的,如果您的目标的 Base SDK 比这些版本旧,您会收到如下警告:

“预览(:traits::body:)”仅在 iOS 17.0 或更高版本中可用

因此,虽然 Xcode 使用

Preview

 宏,但它仍然是使用 Swift API 编写的代码,并且这些 API 需要特定的操作系统版本才能使用。

© www.soinside.com 2019 - 2024. All rights reserved.