缩放 PencilKit 绘图以适合 Canvas 大小
Scale PencilKit Drawing to Fit Canvas size
我的 IOS 应用程序中有一个 PKCanvasView
。当用户输入绘图时,它会将笔画保存为 PKDrawing
。可以在具有不同屏幕尺寸的许多不同设备上访问此绘图。然而,当在较大设备(例如iPad)上创建的绘图在较小设备(例如iPhone)上查看时,绘图从右下角被截断。此外,当在较小设备上创建的绘图在较大设备上查看时,它不会填满 space 而是被限制在右上角。
我的问题:
有什么方法可以放大或缩小 PKDrawing
以适应 PKCanvasView
的框架?
我通过使用 transform
函数放大或缩小绘图以适应屏幕尺寸来修复它。我做了一个扩展:
extension PKDrawing {
mutating func scale(in frame: CGRect) {
var scaleFactor:CGFloat = 0
if self.bounds.width != frame.width {
scaleFactor = frame.width / self.bounds.width
} else if self.bounds.height != frame.height {
scaleFactor = frame.height / self.bounds.height
}
let trasform = CGAffineTransform(scaleX: scaleFactor, y: scaleFactor)
self.transform(using: trasform)
}
}
我的 IOS 应用程序中有一个 PKCanvasView
。当用户输入绘图时,它会将笔画保存为 PKDrawing
。可以在具有不同屏幕尺寸的许多不同设备上访问此绘图。然而,当在较大设备(例如iPad)上创建的绘图在较小设备(例如iPhone)上查看时,绘图从右下角被截断。此外,当在较小设备上创建的绘图在较大设备上查看时,它不会填满 space 而是被限制在右上角。
我的问题:
有什么方法可以放大或缩小 PKDrawing
以适应 PKCanvasView
的框架?
我通过使用 transform
函数放大或缩小绘图以适应屏幕尺寸来修复它。我做了一个扩展:
extension PKDrawing {
mutating func scale(in frame: CGRect) {
var scaleFactor:CGFloat = 0
if self.bounds.width != frame.width {
scaleFactor = frame.width / self.bounds.width
} else if self.bounds.height != frame.height {
scaleFactor = frame.height / self.bounds.height
}
let trasform = CGAffineTransform(scaleX: scaleFactor, y: scaleFactor)
self.transform(using: trasform)
}
}