我目前正在制作一个使用 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 的高度作为输入来缩放绘图的方法。
这行得通,但我认为它很老套,不是最好的解决方案,但这是唯一有效的解决方案。
有一个更好的方法吗?我错过了什么?