J'ai un PDFView qui est configuré pour utiliser un pageViewController:
let pdfView = PDFView()
let pdfDoc = PDFDocument(url: Bundle.main.url(forResource: "test", withExtension: "pdf")!)
pdfView.document = pdfDoc
pdfView.autoScales = true
pdfView.displayDirection = .horizontal
pdfView.usePageViewController(true, withViewOptions: [:])
Chaque fois que je glisse pour aller à la page suivante, cette page est floue pendant une demi-seconde avant d'être rendue de manière abrupte. C'est assez énervant. Puis-je en quelque sorte précharger les pages? Je n'ai trouvé aucun attribut/méthode dans la documentation.
(Fait intéressant, j'ai exactement le même problème dans Preview
sur MacOS
quand il est en mode plein écran [depuis toujours, sur tous les mac que je possède])
Il ne dépend pas de la taille du fichier PDF. Le problème se produit avec chaque pdf que j'ai essayé.
Merci pour toute aide
Assurez-vous d’ajouter les valeurs de .maxScaleFactor .minScaleFactor également selon vos besoins et voyez si cela fait une différence dans le temps de chargement. Par ex.
.maxScaleFactor = 4.0;
.minScaleFactor = self.scaleFactorForSizeToFit;
Avez-vous essayé de changer l'option interpolationQuality?
La qualité d'interpolation pour les images dessinées dans le contexte PDFView.
Les valeurs possibles sont
Peut-être que vous pourriez essayer quelque chose comme
pdfView.interpolationQuality = .low
ou
pdfView.interpolationQuality = .none
Je pense que cela est dû à la haute résolution de votre PDF et à la façon dont PDFView rend le PDF. Avez-vous plus d'informations sur votre PDF?
Pourriez-vous essayer avec un PDF avec des images moins lourdes? Cela devrait rendre bien. Si tel est le cas, ce n'est pas votre code qui est en cause, mais les ressources nécessaires pour l'afficher et le restituer à la vue.
METTRE À JOUR
Vous pouvez essayer d’utiliser PDFView sans PageViewController et vous voir s’il se comporte. Vous pourriez faire ceci:
pdfView = PDFView(frame: view.frame)
pdfView.backgroundColor = UIColor.white
var documentName: String = "test"
if let documentURL = Bundle.main.url(forResource: documentName, withExtension: "pdf") {
if let document = PDFDocument(url: documentURL) {
pdfView.autoScales = true
pdfView.displayDirection = .horizontal
pdfView.displayMode = .singlePageContinuous
pdfView.document = document
}
}
self.view.addSubview(pdfView)
Est-ce qu'il se comporte différemment? J'ai remarqué que l'option usePageViewController
charge le document plus rapidement pour les gros documents PDF. Quelque chose à prendre en compte lors de la mise en œuvre.
J'espère que ça aide