如何在 UIkit 中添加 SwiftUI 对象
Posted
技术标签:
【中文标题】如何在 UIkit 中添加 SwiftUI 对象【英文标题】:How to add a SwiftUI object in UIkit 【发布时间】:2021-12-21 14:21:37 【问题描述】:我已经使用 Hosting View Controller 来连接我的 swiftui 类以在情节提要 (UIkit) 中使用 SwiftUI,但问题是我不想在另一个页面中使用它我想将 SwiftUI 变量(图形)添加到同一个页面我用 UIkit 创建的页面。如何通过 SwiftUI 在 UIkit 中添加一些东西,是否有类似容器托管视图的东西? Container View 可以帮助您在 View 中添加视图,但您不能像编辑 Hosting View Controller 那样编辑它。请帮我一把。 我在下图中展示了我想要 SwiftUI 的位置 ????
【问题讨论】:
查找UIHostingController
和UIViewController
addChild
【参考方案1】:
如果你想在 SwiftUI 中使用 UIKit,你可以使用 UIViewControllerRepresentable(代表 UIKit 视图控制器的视图)。
如果你添加了 UiViewControllerRepresentable 协议。 你可以在 SwiftUI 中使用 UIViewController。
struct ViewControllerRepresentation: UIViewControllerRepresentable
这是示例
final class RedLabel: UILabel
override func awakeFromNib()
super.awakeFromNib()
textColor = .red
struct RepresentableRedLabel: UIViewRepresentable
var text: String
let redLabel = RedLabel()
func makeUIView(context: Context) -> UILabel
redLabel
func updateUIView(_ uiView: UILabel, context: Context)
redLabel.text = text
【讨论】:
以上是关于如何在 UIkit 中添加 SwiftUI 对象的主要内容,如果未能解决你的问题,请参考以下文章
如何复制 UIKit/SwiftUI 元素背景(如 UITabBar/TabView 背景)
如何知道 UIKit 视图控制器中的 swiftUI 事件? ||如何提供 swiftUI 和 uikit 之间的通信
SwiftUI 通过实现 UIViewRepresentable 来使用 UIKit 组件