这个问题不是一个
Code
问题,但我认为它与编码和编程有关,并且遵循StackOverflow指南。
我通常使用
#Preview
,但我需要进行预览以适合我的视图,所以我这样做了:
#Preview(traits: .sizeThatFitsLayout)
但是我得到了:
🛑“预览(:traits::body:)”仅在 iOS 17.0 或更高版本中可用
正如一位 apple 工程师建议,我发现我可以使用
PreviewProvider
使其可用于 iOS 13,这是我的目标操作系统。
但这引发了我几个问题:
#Preview
难道不是PreviewProvider
的另一种实现吗?
1.1 如果是,那么为什么它不支持旧版本。
1.2 如果不是,为什么?原版有问题吗PreviewProvider
?
Preview
不是适用于 Xcode 的吗?那么为什么它没有运行呢? Xcode 是否依赖于 iOS?
预览代码是否随应用程序一起提供?我应该使用
#if DEBUG
之类的东西来限制它吗?
抱歉,如果我无法很好地解释,并感谢您的耐心等待。 🙏🏻
您的问题是代码问题。您正在询问名为
Preview
的 SwiftUI 宏(请参阅 Xcode 中的预览)。与任何 Swift API 一样,该 API 是在各种操作系统的特定版本中添加的。
较旧的 是从 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 需要特定的操作系统版本才能使用。