首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在pdfView中禁用放大和缩小?

如何在pdfView中禁用放大和缩小?
EN

Stack Overflow用户
提问于 2019-02-22 22:24:58
回答 3查看 3K关注 0票数 4

我只想要我收到的东西

代码语言:javascript
复制
 pdfView.autoScales = true

而没有改变比例的可能性。

在@carmine的帮助下,我们有:

代码语言:javascript
复制
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
            }
        }
    }
}

这就产生了这样的结果:https://gfycat.com/briefpowerlessbug

但是,如果您运行时没有使用这些行:

代码语言:javascript
复制
            pdfView.minScaleFactor = pdfView.scaleFactor
            pdfView.maxScaleFactor = pdfView.scaleFactorForSizeToFit

您将收到我需要的结果,但带有缩放功能:https://gfycat.com/presentconcretebunting

我想禁用缩放,并使pdfView的宽度等于pdf-file的宽度。

EN

回答 3

Stack Overflow用户

发布于 2019-09-14 04:28:56

我尝试了各种禁用收缩缩放的方法,包括覆盖canZoomIn (我发现它在收缩缩放时没有被调用),设置代理的pdfViewWillChangeScaleFactor方法(我发现它从未被调用过),以及在视图上设置最大和最小比例因子(这阻止了视图自动缩放)。

最后,通过将我自己的pinchGestureRecognizer添加到PDFView以覆盖pinchGestureRecognizer中内置的视图,我能够完成我想要的事情。为了使您的夹点识别器具有优先级,您需要为识别器创建一个委托并覆盖以下方法:

代码语言:javascript
复制
 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
}
票数 3
EN

Stack Overflow用户

发布于 2019-02-22 22:36:31

使用

代码语言:javascript
复制
 pdfView.minScaleFactor = pdfView.scaleFactor
 pdfView.maxScaleFactor = pdfView.scaleFactorForSizeToFit

并添加

代码语言:javascript
复制
override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) {
    super.viewWillTransition(to: size, with: coordinator)
    self.pdfView.autoScales = true
}
票数 2
EN

Stack Overflow用户

发布于 2019-09-09 15:37:22

解决方案是创建一个CustomPDFView并覆盖它的实例属性 canZoomIn

代码语言:javascript
复制
class CustomPDFView: PDFView {
    override func canZoomIn() -> Bool {
        return false
    }
}

那么@IBOutlet weak var pdfView: PDFView!的类型应该是@IBOutlet weak var pdfView: CustomPDFView!。还要在IdentyInspector上更新它,这样它就不会让你崩溃。

有关更多信息,请查看:来自Apple Docs的canZoomIn

canZoomIn

返回一个布尔值,指示用户是否可以放大视图和放大。

声明

代码语言:javascript
复制
var canZoomIn: Bool { get }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54829190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档