这是我的SwiftUI代码,可以正常工作。 用户可以轻松绘制和按下按钮。 我希望用户使用任何东西,标签,按钮等。 但是,我该如何使用UIKit? 有什么主意吗?
((我为swiftui编辑了Kavsoft的代码铅笔工具包:https://kavsoft.tech/SwiftUI_2.0/Pencil_Kit/)
import SwiftUI
import PencilKit
struct ContentView: View {
var body: some View {
myContentView()
}
}
struct ContentView_Previews: PreviewProvider {
static var previews: some View {
myContentView()
}
}
struct myContentView: View {
@State var canvas = PKCanvasView()
@State var isDraw = true
@State var color : UIColor = .black
@State var type : PKInkingTool.InkType = .pen
@State var colorPicker = false
@State var mytextSize = CGFloat(UIScreen.main.bounds.height * 0.032)
@State var kalemlikSize = CGFloat(UIScreen.main.bounds.height * 0.038)
@State private var selectedFrameworkIndex = 0
var body: some View {
VStack{
HStack{ //MARK: HEADER
Spacer()
Button(action: {
}) {
Text("Title").foregroundColor(.black).font(.title)
}
Spacer()
}.padding(5)
ZStack{
PKCanvasRepresentation(canvas: $canvas, isDraw: $isDraw,type: $type,color: $color)
VStack(alignment: .leading, spacing: 10){
//Spacer()
Text("Label1")
Text("Label2").font(.title)
Button(action:{ // MARK: Şık A
print("button pressed")
}){
Text("my blue button")
Spacer()
}.padding(5)
Spacer()
HStack(alignment:.bottom, spacing: 20){
Spacer().frame(width: 0.1)
Group{
Spacer()
Button(action: {
self.canvas.isUserInteractionEnabled = true
self.type = .pen
self.isDraw = true
self.color = .black
}) {
Image(systemName: "pencil.tip")
.resizable().aspectRatio(contentMode: .fit).frame(height: kalemlikSize, alignment: .center).accentColor(.black)
}
Button(action: {
self.canvas.drawing = PKDrawing()
}) {
Image(systemName: "trash").resizable().aspectRatio(contentMode: .fit).frame(height: mytextSize * 1.2, alignment: .bottom)
}
Spacer()
}
Spacer().frame(width: 0.1)
}
}.padding(5)
}
}
}
}
struct PKCanvasRepresentation : UIViewRepresentable {
@Binding var canvas : PKCanvasView
@Binding var isDraw : Bool
@Binding var type : PKInkingTool.InkType
@Binding var color : UIColor
var ink : PKInkingTool{
PKInkingTool(type, color: color )
}
let eraser = PKEraserTool(.vector)
func makeUIView(context: Context) -> PKCanvasView{
canvas.tool = isDraw ? ink : eraser
return canvas
}
func updateUIView(_ uiView: PKCanvasView, context: Context) {
uiView.tool = isDraw ? ink : eraser
}
}
这是我的SwiftUI代码,可以正常工作。 用户可以轻松绘制和按下按钮。 我希望用户使用任何东西,标签,按钮等。 但是,如何使用UIKit做到这一点? 有什么主意吗?
答案 0 :(得分:1)
如果您的代码可以正常工作,则只需将代码放入UIHostingController
import SwiftUI
class SwiftUI_ViewController: UIViewController {
let contentView = UIHostingController(rootView: myContentView())
override func viewDidLoad() {
addChild(contentView)
view.addSubview(contentView.view)
}
}
然后像其他任何UIViewController
一样初始化UIViewController
。
注意:可能需要调整Storyboard
或UIViewController
中的约束。