iOS:如何清除 PDFView?
Posted
技术标签:
【中文标题】iOS:如何清除 PDFView?【英文标题】:iOS: How to clear PDFView? 【发布时间】:2021-01-03 16:23:50 【问题描述】:我正在展示一些带有 PDFView
类的 PDF 文件。有一个问题是当我加载或更好地说替换另一个文件时,加载新文件时最后加载的文件仍然可见。
代码如下:
var pdfView = PDFView()
//MARK: - PDF KIT
func previewPDF(url:URL)
if self.view.subviews.contains(pdfView)
self.pdfView.removeFromSuperview() // Remove it
else
pdfView = PDFView(frame: PDFPreview.bounds)
pdfView.removeFromSuperview()
pdfView.backgroundColor = .clear
pdfView.displayMode = .singlePage
pdfView.autoScales = true
pdfView.pageShadowsEnabled = false
pdfView.document = PDFDocument(url: url)
thumbnail = PDFThumbnail(url: url, width: 240)
// I tried to nil PDFPreview, still nothing happened
PDFPreview.addSubview(pdfView)
【问题讨论】:
请您检查一下这个答案:- ***.com/a/53477567/3607051 【参考方案1】:在这里,您将 pdfView 添加为 PDFPreview 的子视图,但在第一次尝试删除它时,您正在检查它是否存在于 self.view 的子视图中,但 实际上它在 PDFPreview 的子视图中。所以改成如下代码
func previewPDF(url:URL)
if PDFPreview.subviews.contains(pdfView)
self.pdfView.removeFromSuperview() // Remove it
else
当您第二次尝试使用 removeFromSuperview() 删除它时,您已经实例化了另一个 PDFView() 并丢失了对旧 PDFView 的引用,因此删除旧 PDFView 也失败了。
替代解决方案: 如果您只是更改 pdf 文档,更好的解决方案是更改 PDFView 的文档属性。例如:
if let document = PDFDocument(url: path)
pdfView.document = document
【讨论】:
谢谢,我检查的是self.view
而不是PDFPreview
,现在可以使用以上是关于iOS:如何清除 PDFView?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 ios 13 中禁用 pdfkit pdfview 中的查找、共享、转发菜单项
如何知道用户何时在 PDFKit 的 PDFView 中滑动到下一页?
如何在 iOS、PDFKit、swift 中获取 pdf 页面的准确 X 和 Y 原点值