У вашего PDFView есть свойство под названием scaleFactorForSizeToFit
, которое представляет собой масштабный коэффициент, который PDFKits autoScales
будет использовать для масштабирования текущего документа и макета.
Это означает, что если вы используете autoScales
свойство, когда вы установите свой PDF, вы сможете рассчитать сумму для масштабирования вашего UIScrollview.
Вот пример того, что я имею в виду для некоторого дополнительного контекста:
//wherever you set your pdf (doesn't have to be viewDidAppear)
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
pdfView.document = PDFDocument(data: data)
pdfView.autoScales = true
//Add the observer here to detect when your pdf is zoomed in or out
NotificationCenter.default.addObserver(self,
selector: #selector(pdfPageWasZoomed),
name: Notification.Name.PDFViewPageChanged,
object: nil)
}
//wherever you want to zoom use this
func getScrollViewScaleFactor() -> CGFloat {
return (pdfView.scaleFactor / pdfView.scaleFactorForSizeToFit)
}
//Objc function which is called everytime the zoom changes
@objc private func pdfPageWasZoomed() {
//Here use the function getScrollViewScaleFactor() to get a factor to scale in or out by
}
Что-токак это должно решить вашу проблему.