使用不同的坐标系注释 PDF
Annotating PDFs with different coordinate systems
我正在使用 PDFKIT 在 pdf 上画一条线。我如下重写触摸开始、移动等,以记录我对 pdfView 的文档视图的触摸,如下所示:
override func touchesMoved(_ touches: Set<UITouch>,
with event: UIEvent?) {
// 6
swiped = true
if let touch = touches.first {
let currentPoint = touch.location(in: pdfView.documentView)
drawLineFrom(fromPoint: lastPoint, toPoint: currentPoint)
addAnnotation(fromPoint: lastPoint, toPoint: currentPoint)
// 7
lastPoint = currentPoint
}
}
但是,正如您从我下面的图片中看到的那样(黑线是我触摸屏幕的地方,红线是绘制注释的地方)。触摸坐标系在屏幕左上角 (0,0),pdf 从屏幕左下角 (0,0) 开始注释。
我的添加注解功能如下:
func addAnnotation(fromPoint: CGPoint, toPoint: CGPoint) {
let page = pdfView.document?.page(at: 0)
let bounds = CGRect(x: 0, y: 0, width: 600, height: 600)
let line = PDFAnnotation(bounds: bounds, forType: .line, withProperties: nil)
line.startPoint = fromPoint
line.endPoint = toPoint
line.startLineStyle = .none
line.endLineStyle = .none
line.color = .red
let border = PDFBorder()
border.lineWidth = 4.0
line.border = border
page?.addAnnotation(line)
}
如何对齐坐标系,使我在屏幕上触摸的位置就是绘制注释的位置?
对于那些感兴趣的人,我通过使用框架附带的以下函数解决了这个问题,该框架将点从视图 space 转换为页面 space。
func convert(_ point: CGPoint, to page: PDFPage) -> CGPoint
希望这对你们中的一些人有所帮助。
我正在使用 PDFKIT 在 pdf 上画一条线。我如下重写触摸开始、移动等,以记录我对 pdfView 的文档视图的触摸,如下所示:
override func touchesMoved(_ touches: Set<UITouch>,
with event: UIEvent?) {
// 6
swiped = true
if let touch = touches.first {
let currentPoint = touch.location(in: pdfView.documentView)
drawLineFrom(fromPoint: lastPoint, toPoint: currentPoint)
addAnnotation(fromPoint: lastPoint, toPoint: currentPoint)
// 7
lastPoint = currentPoint
}
}
但是,正如您从我下面的图片中看到的那样(黑线是我触摸屏幕的地方,红线是绘制注释的地方)。触摸坐标系在屏幕左上角 (0,0),pdf 从屏幕左下角 (0,0) 开始注释。
我的添加注解功能如下:
func addAnnotation(fromPoint: CGPoint, toPoint: CGPoint) {
let page = pdfView.document?.page(at: 0)
let bounds = CGRect(x: 0, y: 0, width: 600, height: 600)
let line = PDFAnnotation(bounds: bounds, forType: .line, withProperties: nil)
line.startPoint = fromPoint
line.endPoint = toPoint
line.startLineStyle = .none
line.endLineStyle = .none
line.color = .red
let border = PDFBorder()
border.lineWidth = 4.0
line.border = border
page?.addAnnotation(line)
}
如何对齐坐标系,使我在屏幕上触摸的位置就是绘制注释的位置?
对于那些感兴趣的人,我通过使用框架附带的以下函数解决了这个问题,该框架将点从视图 space 转换为页面 space。
func convert(_ point: CGPoint, to page: PDFPage) -> CGPoint
希望这对你们中的一些人有所帮助。