如何在 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 的位置 ????

【问题讨论】:

查找UIHostingControllerUIViewControlleraddChild 【参考方案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 组件

值更改时如何在 UIKit 中更新 SwiftUI 视图?

SwiftUI/UIKit 如何将 SwiftUI 字体转换为 UIKit UIFont?

Swift:将 SwiftUI 元素添加到 UIKit 项目:无法正确应用约束