我正在用Xcode 14.0和SWIFT5.7和SwiftUI开发一个macOS应用程序。我在我的MacBook M1 Pro上运行MacBook 12.6。我需要至少支持一个macOS 11.0,这意味着有许多新的SwiftUI函数我无法使用,因为它们需要macOS 12.0+。对于SwiftUI布局,我经常使用的一个函数是overlay(_:alignment:)。根据苹果文档的说法,这是不可取的。这很有趣,因为我仍然能够在我描述的设置中使用它。然而,如果该功能在技术上被弃用,这是否会在部署时破坏该应用程序?总的来说,苹果的向后兼容性并不是很好,在你的应用程序中断或者被Apple拒绝之前,也很难找到关于向后兼容性的信息。如前所述,我不能使用建议的覆盖(对齐:内容:),因为它需要macOS 12.0+。
也许我应该放弃macOS 11,并要求使用macOS 12,因为它已经过去几年了,但据我所读到,根据2021年进行的一项调查,许多用户(超过70%)仍在运行macOS 11。也许现在macOS 13已经发布了,这就不一样了。

发布于 2022-11-21 18:49:48
继续使用不推荐的overlay版本是安全的。苹果将在数年内从SwiftUI上删除它,如果有可能的话。
但是,如果您希望获得额外的安全性,您可以编写自己的修饰符,如果新的overlay不可用,则可以使用不推荐的overlay:
extension View {
@ViewBuilder
func overlayWorkaround<V: View>(
alignment: Alignment = .center,
@ViewBuilder _ content: () -> V
) -> some View {
if #available(macOS 12, macCatalyst 15, iOS 15, tvOS 15, watchOS 8, *) {
self.overlay(alignment: alignment, content: content)
} else {
self.overlay(content(), alignment: alignment)
}
}
}https://stackoverflow.com/questions/74523443
复制相似问题