5

我目前正在制作一个使用 PencilKit 和 SwiftUI 的应用程序。如果屏幕旋转,画布(和绘图)应该相应地重新缩放。我使用几何阅读器执行此操作并计算大小。

    NavigationView {
                GeometryReader { g in
                   HStack {
                    CanvasView(canvasView: $canvasView)
                        .frame(width: g.size.width/1.5, height: (g.size.width/1.5)/1.5)
                    placeholder(placeholder: scaleDrawing(canvasHeight: (g.size.width/1.5)/1.5))
                   }
                 }
    }


func scaleDrawing(canvasHeight : CGFloat) ->  Bool {
    
    let factor = canvasHeight / lastCanvasHeight

    let transform = CGAffineTransform(scaleX: factor, y: factor)
    
    canvasView.drawing = canvasView.drawing.transformed(using: transform)
    
    lastCanvasHeight = canvasHeight

    return true
}

然而,绘图没有缩放。
我的解决方案是创建一个以布尔值作为参数的占位符视图。也是一种使用 Canvas 的高度作为输入来缩放绘图的方法。
这行得通,但我认为它很老套,不是最好的解决方案,但这是唯一有效的解决方案。
有一个更好的方法吗?我错过了什么?

4

0 回答 0