PDFView的转换功能不起作用

时间:2019-10-29 05:44:22

标签: ios swift uikit transform pdfview

我正在尝试添加一个突出显示PDFView部分的图层。

当我生成PDF时,我已经保存了PDF文档的三个区域。在其下方的metadata.headerRectmetadata.weekdayRectmetadata.daysRect

如果我使用drawPagePosthttps://developer.apple.com/documentation/pdfkit/pdfview/1642236-drawpagepost)突出显示这些区域,则会将其绘制在正确的位置。

override func drawPagePost(_ page: PDFPage, to context: CGContext) {
    context.setFillColor(UIColor.blue.withAlphaComponent(0.25).cgColor)
    context.fill(metadata.headerRect)
    context.fill(metadata.weekdayRect)
    context.fill(metadata.daysRect)
}

但是,如果我使用`PDFView的功能:

// Converts a rect from page coordinates to view coordinates.
open func convert(_ rect: CGRect, from page: PDFPage) -> CGRect

以下方式:

    let path = CGMutablePath()
    selectedBox.strokeColor = UIColor.red.withAlphaComponent(0.25).cgColor
    selectedBox.fillColor = UIColor.red.withAlphaComponent(0.25).cgColor
    selectedBox.frame = bounds
    path.addPath(UIBezierPath(rect: convert(metadata.headerRect, from: document!.page(at: 0)!)).cgPath)
    path.addPath(UIBezierPath(rect: convert(metadata.weekdayRect, from: document!.page(at: 0)!)).cgPath)
    path.addPath(UIBezierPath(rect: convert(metadata.daysRect, from: document!.page(at: 0)!)).cgPath)
    selectedBox.path = path

这三个形状完全不合。如您在所附图像中看到的那样,红色区域没有覆盖其应有的内容。正确的区域是蓝色覆盖的区域。我希望蓝色和红色区域位于相同的位置。

enter image description here

0 个答案:

没有答案