Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/118.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在pdfView中禁用放大和缩小?_Ios_Swift_Pdfview - Fatal编程技术网

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的宽度,并且在旋转到“横向”后宽度也不会改变,因此无法正常工作。我用代码和动画更新了问题。请检查此项,可能对您有帮助: