如果我将 UIKit 应用程序更新为 SwiftUI,老 iOS 用户会发生啥?
Posted
技术标签:
【中文标题】如果我将 UIKit 应用程序更新为 SwiftUI,老 iOS 用户会发生啥?【英文标题】:What happens for older iOS users if I update my UIKit app to SwiftUI?如果我将 UIKit 应用程序更新为 SwiftUI,老 iOS 用户会发生什么? 【发布时间】:2021-07-03 06:02:15 【问题描述】:我有几个基于 UIKit 的 ios 应用程序已经在 AppStore 上分发,我想更新这些应用程序,我正在考虑切换到 SwiftUI。
我的问题是:对于已经拥有该应用但运行的 iOS 版本早于 iOS13 的用户会发生什么?应用程序是否会完全不可用,或者他们会保留使用旧版 UIKit 的能力?
非常感谢!
【问题讨论】:
【参考方案1】:要在您的应用中允许 SwiftUI,您必须允许支持 iOS 13 及更高版本。您可以通过将应用程序的支持更改为 iOS 13 及更高版本或在新代码周围使用“@available(iOS 13.0, *)”装饰器来实现。 在第一种情况下,用户将保持使用其设备上安装的最新版本的能力。他们将无法更新到较新的版本。 在后一种情况下,作为开发人员,您需要进行更多处理。用户将能够继续和更新应用程序并使用您提供的替代代码
【讨论】:
【参考方案2】:您可以使用编译器指令为运行 iOS 13 的用户创建 SwiftUI 视图,并为 iOS 12 或更低版本提供 UIKit 替代方案。
例如,您可以将 SwiftUI 视图标记为仅适用于 iOS 13:
@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)
【讨论】:
以上是关于如果我将 UIKit 应用程序更新为 SwiftUI,老 iOS 用户会发生啥?的主要内容,如果未能解决你的问题,请参考以下文章
如何在应用 UIKit Dynamics 的重力时获取 UIView 的帧更新?