我试图将PDFPage
绘制到UIView
子类的上下文中:
class PDFPageView: UIView {
private let page: PDFPage
init(frame: CGRect, page: PDFPage) {
self.page = page
super.init(frame: frame)
}
required init?(coder aDecoder: NSCoder) {
fatalError()
}
override func draw(_ rect: CGRect) {
guard let context = UIGraphicsGetCurrentContext() else { return }
// This scales the page correctly (ignoring aspect ratios for now, though)
let bounds = page.bounds(for: .mediaBox)
context.scaleBy(x: rect.width / bounds.width, y: rect.height / bounds.height)
// This has no effect when I use it (?)
// page.transform(context, for: .mediaBox)
page.draw(with: .mediaBox, to: context)
}
}
它正在绘制一些东西,但它是镜像的(垂直),我不知道如何纠正这个问题。我认为page.transform(context, for: .mediaBox)
应该做所有事情,以便上下文正确地呈现页面。但奇怪的是,它没有任何作用。
我尝试手动设置比例。它起作用,但仅限于正值。如果我尝试设置负x刻度或y刻度(以补偿镜像),我的设备上只会出现黑屏。
我不知道该怎么做。此外,它只适用于某些pdf。我想给你看一个截图,所以我创建了一个小的pdf文件(我用于测试的文件是受版权保护的,我认为)并将其加载到应用程序中。但我也只是黑屏。
我真的很感激任何帮助。
谢谢
编辑:好的,我有点工作了。在将y轴缩放负值后,我需要使用context.translateBy(x: 0, y: rect.height)
翻译上下文。然后它被正确呈现。
但是,为什么page.transform(context, for: .mediaBox)
不这样做呢?并且垂直翻转对每个 pdf页面有效的上下文?