在UIKit中调用SwiftUI,需要使用UIHostingController对SwiftUI的view进行包装,代码如下:
import UIKit
import SwiftUI
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
SwiftUiView.textStr = "SwiftUiView"
SwiftUiView.color = .red
let vc = UIHostingController(rootView: SwiftUiView())
vc.view.frame = self.view.bounds
self.view.addSubview(vc.view)
}
}
// SwiftUI
struct SwiftUiView: View {
static var textStr : String = ""
static var color : Color?
var body: some View{
VStack(){
Spacer()
HStack{
Spacer()
Text(SwiftUiView.textStr)
Spacer()
}.padding(0)
Spacer()
}.background(SwiftUiView.color).padding(0)
}
}
效果如下:
1.jpg