如果我将 UIKit 应用更新为 SwiftUI,iOS 老用户会怎样?

What happens for older iOS users if I update my UIKit app to SwiftUI?

我有几个基于 UIKit 的 iOS 应用程序已经发布在 AppStore 上,我想更新它们,我考虑切换到 SwiftUI。

我的问题是:对于已经拥有该应用程序但 运行 iOS 版本早于 iOS13 的用户会怎样?他们会完全无法使用该应用程序,还是会保留使用旧 UIKit 版本的能力?

非常感谢!

要在您的应用中使用 SwiftUI,您必须允许支持 iOS 13 及更高版本。您可以通过将应用程序的支持更改为 iOS 13 及更高版本或在新代码周围使用“@available(iOS 13.0, *)”装饰器来实现。 在第一种情况下,用户将保留使用其设备上安装的最新版本的能力。他们将无法更新到较新的版本。 在后一种情况下,作为开发人员,这将需要您进行更多处理。用户将能够继续并更新应用程序并使用您提供的替代代码

您可以使用编译器指令为用户 运行 iOS 13 创建 SwiftUI 视图,并为 iOS 12 或更低版本提供 UIKit 替代方案。

例如,您可以将 SwiftUI 视图标记为仅在 iOS13:

可用
@available(iOS 13.0, *)
struct MyView: View {
  // ...
}

并创建一个 UIKit 替代方案:

class MyViewController: UIViewController {
  // ...
}

然后,在呈现视图时,您可以有条件地显示正确的版本:

let destinationVC: UIViewController

if #available(iOS 13.0, *) {
  destinationVC = UIHostingController(rootView: MyView())
} else {
  destinationVC = MyViewController()    
}
self.present(destinationVC, animated: true, completion: nil)