代码之家  ›  专栏  ›  技术社区  ›  iOS.Lover

iOS:如何清除PDFView?

  •  0
  • iOS.Lover  · 技术社区  · 3 年前

    我正在展示一些带有 PDFView 班有一个问题是,当我加载或更好地说替换另一个文件时,最后加载的文件在加载新文件时仍然可见。

    enter image description here

    以下是代码:

    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)
    }
    
    0 回复  |  直到 3 年前
        1
  •  1
  •   Tibin Thomas    3 年前

    在这里,您将pdfView添加为PDFPreview的子视图,但在第一次尝试删除它时,您将检查它是否存在于self的子视图中。但是 实际上它在PDFPreview的子视图中 .因此,将其更改为以下代码

    func previewPDF(url:URL) {
        if PDFPreview.subviews.contains(pdfView) {
           self.pdfView.removeFromSuperview() // Remove it
         } else { 
       
       }
    

    而且,当你第二次尝试使用removeFromSuperview()删除它时,你已经实例化了另一个PDFView(),并且丢失了对旧PDFView的引用,因此删除旧PDFView也会失败。

    替代方案 : 如果只是更改pdf文档,更好的解决方案就是更改PDFView的document属性。如:

    if let document = PDFDocument(url: path) {
        pdfView.document = document
      }
    
    推荐文章