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 中的查找、共享、转发菜单项

在 PDFView (iOS) 上禁用缩放

如何知道用户何时在 PDFKit 的 PDFView 中滑动到下一页?

如何在 iOS、PDFKit、swift 中获取 pdf 页面的准确 X 和 Y 原点值

如何知道用户何时在 PDFView 中滑动到下一页? - 安卓

如何在 Swift 中创建单页垂直滚动 PDFView