Is it possible to remove [“Page 1 of 20” view] in a UIwebview when displaying pdf?

前端 未结 4 1377
我在风中等你
我在风中等你 2021-01-12 20:02

I can not get to a solution after much googling. I have a UIWebView with a PDF in it.

I do not want the view: \"Page 1 of 20\" The small view in the upper left corn

相关标签:
4条回答
  • 2021-01-12 20:27

    I found a solution to your question... You can Hide the "Page 1 of 20" using following code :

    for (UIView* subView in [webView subviews])
    {
        if ([subView isKindOfClass:[UIScrollView class]]) {
            for (UIView* shadowView in [subView subviews])
            {
                if ([shadowView isKindOfClass:[UIImageView class]]) {
                    [shadowView setHidden:YES];
                }
            }
        }
    }
    

    Hope this may be helpful to some one... Thanks...

    0 讨论(0)
  • 2021-01-12 20:32

    After a while I've found a solution using swift 5 and WKWebView together with my partner:

    let pdfWebView: WKWebView = {
         let webView = WKWebView()
         webView.backgroundColor = .clear
         webView.isOpaque = false
         webView.contentMode = .scaleToFill
         return webView
    }()
    
    pdfWebView.delegate = self
    pdfWebView.navigationDelegate = self
    
    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
         guard let last = webView.subviews.last else {
              return
         }
    
         last.isHidden = true
    }
    
    0 讨论(0)
  • 2021-01-12 20:34

    Swift 3 and WKWebView

    I get all the subviews of the WKWebView and then remove WKPDFPageNumberIndicator:

    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
      let webViewSubviews = self.getSubviewsOfView(v: self.webView)
      for v in webViewSubviews {
        if v.description.range(of:"WKPDFPageNumberIndicator") != nil {
          v.isHidden = true // hide page indicator in upper left
        }
      }
    }
    
    func getSubviewsOfView(v:UIView) -> [UIView] {
      var viewArray = [UIView]()
      for subview in v.subviews {
        viewArray += getSubviewsOfView(v: subview)
        viewArray.append(subview)
      }
      return viewArray
    }
    

    You'll probably have to set webView.navigationDelegate = self

    UPDATE (not tested) - Swift 4

    Keep the getSubviewsOfView function from above and modify the webView function like this:

    func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
      let webViewSubviews = self.getSubviewsOfView(v: self.webView)
      for v in webViewSubviews {
        if v.isKind(of: UILabel.self) || v.isKind(of: UIImageView.self) || v.isKind(of: UIVisualEffectView.self) {
          v.isHidden = true
        }
      }
    }
    
    0 讨论(0)
  • 2021-01-12 20:53

    This code is working on iOS9, 10 (tested)

        func hidePageNumberView(v: UIView) {
            for subView in v.subviews {
                if subView.isKindOfClass(UIImageView) || subView.isKindOfClass(UILabel) || subView.isKindOfClass(UIVisualEffectView){
                    subView.hidden = true
    
                    if subView.isKindOfClass(UILabel) {
                        if let sv = subView.superview {
                            sv.hidden = true
                        }
                    }
                } else {
                    hidePageNumberView(subView)
                }
            }
        }
    

    Implement webView.scrollView.delegate and run above code in scrollViewDidScroll

    Hope this help.

    iOS 11 / Swift 4:

    func scrollViewDidScroll(_ scrollView: UIScrollView) {
        hidePageNumberView(scrollView)
    }
    
    func hidePageNumberView(_ v: UIView) {
        for subView in v.subviews {
            if subView is UIImageView || subView is UILabel || subView is UIVisualEffectView {
                subView.isHidden = true
    
                if subView is UILabel {
                    if let sv = subView.superview {
                        sv.isHidden = true
                    }
                }
            } else {
                hidePageNumberView(subView)
            }
        }
    }
    
    0 讨论(0)
提交回复
热议问题