在现有 UIKit 应用程序中包含 SwiftUI 视图

2023-12-08

是否可以使用 SwiftUI 与现有 UIKit 应用程序并排构建视图?

我有一个用 Objective-C 编写的现有应用程序。我已经开始迁移到 Swift 5。我想知道是否可以将 SwiftUI 与现有的 UIKit .xib 视图一起使用。

也就是说,我希望在同一个应用程序中使用 SwiftUI 构建一些视图,并使用 UIKit 构建一些其他视图。当然不能将两者混合。

SomeObjCSwiftProject/
    SwiftUIViewController.swift
    SwiftUIView.xib
    UIKitViewController.swift
    UIKitView.xib

并肩工作


编辑 05/06/19:添加了有关 UIHostingController 的信息,如 @Departamento B 在他的回答中所建议的。功劳归他所有!


在 UIKit 中使用 SwiftUI

一个可以用SwiftUI现有组件UIKit环境通过包装SwiftUI View into a UIHostingController像这样:

let swiftUIView = SomeSwiftUIView() // swiftUIView is View
let viewCtrl = UIHostingController(rootView: swiftUIView)

也可以覆盖UIHostingController并根据需要进行定制,例如。 G。通过设置preferredStatusBarStyle如果不起作用,请手动通过SwiftUI正如预期的那样。

UIHostingController已记录here.


在 SwiftUI 中使用 UIKit

如果现有的UIKit视图应该用在SwiftUI环境、UIViewRepresentable协议可以提供帮助!有记录here并且可以在行动中看到this苹果官方教程。


兼容性

请注意,您不能使用SwiftUI在 iOS 版本 SwiftUI仅适用于 iOS 13 及更高版本。看this发布以获取更多信息。

如果你想使用SwiftUI在目标低于 iOS 13 的项目中,您需要标记您的SwiftUI结构与@available(iOS 13.0.0, *)属性。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在现有 UIKit 应用程序中包含 SwiftUI 视图 的相关文章

随机推荐