在显示pdf时,是否可以在UIwebview中删除[“Page 1 of 20”视图]?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在显示pdf时,是否可以在UIwebview中删除[“Page 1 of 20”视图]?相关的知识,希望对你有一定的参考价值。

经过多次谷歌搜索后,我无法找到解决方案。我有一个带有PDF的UIWebView。

我不想要视图:“第1页,共20页”查看PDF文件时左上角的小视图。有可能删除这个吗?

答案

斯威夫特3和WKWebView

我得到了WKWebView的所有子视图,然后删除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
}

你可能要设置webView.navigationDelegate = self

更新(未测试) - Swift 4

保持上面的getSubviewsOfView函数并修改webView函数,如下所示:

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
    }
  }
}
另一答案

此代码适用于ios9,10(已测试)

    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)
            }
        }
    }

实现webView.scrollView.delegate并在scrollViewDidScroll上运行上面的代码

希望这有帮助。

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)
        }
    }
}
另一答案

我找到了你问题的解决方案...你可以使用以下代码隐藏“第1页,共20页”:

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];
            }
        }
    }
}

希望这可能对某些人有所帮助......谢谢......

以上是关于在显示pdf时,是否可以在UIwebview中删除[“Page 1 of 20”视图]?的主要内容,如果未能解决你的问题,请参考以下文章

uiwebview中pdf的页码

PDF uiwebview 加载时未显示活动指示器

在 UIWebview 中打开 pdf 时出错

PDF 未在 UIWebView 中正确显示

对象 - 在UIWebView中打开PDF?

黑色图块在UIWebview中以pdf缩放显示