Ios 如何在pdfView中禁用放大和缩小?
我想要的是我在毕业后得到的东西Ios 如何在pdfView中禁用放大和缩小?,ios,swift,pdfview,Ios,Swift,Pdfview,我想要的是我在毕业后得到的东西 pdfView.autoScales = true 没有可能改变比例 在@carmine的帮助下,我们有: import UIKit import PDFKit class ViewController: UIViewController { @IBOutlet weak var pdfView: PDFView! override func viewDidLoad() { super.viewDidLoad() setPdfFile(
pdfView.autoScales = true
没有可能改变比例
在@carmine的帮助下,我们有:
import UIKit
import PDFKit
class ViewController: UIViewController {
@IBOutlet weak var pdfView: PDFView!
override func viewDidLoad() {
super.viewDidLoad()
setPdfFile()
}
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransition(to: size, with: coordinator)
self.pdfView.autoScales = true
}
func setPdfFile() {
if let path = Bundle.main.path(forResource: "Swift.org - Getting Started", ofType: "pdf") {
let url = URL(fileURLWithPath: path)
if let pdfDocument = PDFDocument(url: url) {
pdfView.autoScales = true
pdfView.displayMode = .singlePageContinuous
pdfView.displayDirection = .vertical
pdfView.document = pdfDocument
pdfView.displaysPageBreaks = false
pdfView.minScaleFactor = pdfView.scaleFactor
pdfView.maxScaleFactor = pdfView.scaleFactorForSizeToFit
}
}
}
}
这就产生了这样一个结果:
但是,如果您在没有这些线路的情况下运行:
pdfView.minScaleFactor = pdfView.scaleFactor
pdfView.maxScaleFactor = pdfView.scaleFactorForSizeToFit
您将收到我需要的结果,但需要缩放:
我想禁用缩放并使pdfView的宽度等于pdf文件的宽度 使用
pdfView.minScaleFactor = pdfView.scaleFactor
pdfView.maxScaleFactor = pdfView.scaleFactorForSizeToFit
加
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
super.viewWillTransition(to: size, with: coordinator)
self.pdfView.autoScales = true
}
解决方案是创建一个
CustomPDFView
并覆盖它的实例属性canZoomIn
:
class CustomPDFView: PDFView {
override func canZoomIn() -> Bool {
return false
}
}
然后,@ibfview:pdfView代码>应为@IBOutlet弱变量pdfView:CustomPDFView类型代码>。还要在IdentitySpector上更新它,这样它就不会使您崩溃
有关更多信息,请查看:来自Apple Docs
canZoomIn
var canZoomIn: Bool { get }
返回一个布尔值,指示用户是否可以放大
查看并放大
声明
var canZoomIn: Bool { get }
我尝试了各种禁用收缩缩放的方法,包括覆盖canZoomIn(我发现在收缩缩放时未调用它)、设置代理的pdfViewWillChangeScaleFactor方法(我发现从未调用过它)以及在视图上设置最大和最小比例因子(这阻止了视图自动缩放)
最后,我通过将我自己的PinchGestureRecognitor添加到PDFView中来覆盖视图的内置PinchGestureRecognitor,实现了我想要的目标。为了使夹点识别器具有优先权,您需要为识别器创建一个委托,并覆盖以下方法:
func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer,
shouldBeRequiredToFailBy otherGestureRecognizer: UIGestureRecognizer) -> Bool {
//Prefer this pinch recognizer over the default one to override pinch zoom
if gestureRecognizer is UIPinchGestureRecognizer && otherGestureRecognizer is UIPinchGestureRecognizer {
return true
}
}
return false
}
然后pdf的宽度不等于pdfView的宽度,并且在旋转到“横向”后宽度也不会改变,因此无法正常工作。我用代码和动画更新了问题。请检查此项,可能对您有帮助: