gpt4 book ai didi

swift - WKWebView 在边框内显示 pdf,我不想要边框

转载 作者:搜寻专家 更新时间:2023-10-31 22:37:21 27 4
gpt4 key购买 nike

我有一个自定义 View ,它添加了一个像这样的 WKWebView:

 override func awakeFromNib() {
super.awakeFromNib()
loadWebView()
}

func loadWebView() {
pdfWebView = WKWebView(frame: .zero)

pdfWebView.navigationDelegate = self
pdfWebView.translatesAutoresizingMaskIntoConstraints = false
pdfWebView.isHidden = true
self.addSubview(pdfWebView)
... add constrains to self anchors - top, left, right, bottom
}

加载完成后,我有这个:

  func webView(_ webView: WKWebView, didFinish navigation: WKNavigation!) {
DispatchQueue.main.asyncAfter(deadline: .now() + 0.8, execute: {
SVProgressHUD.dismiss()
webView.isHidden = false
webView.isOpaque = true
webView.adjustInsets()
})
}

我不得不调整插图,因为在 iPhone X 上,有时 pdf 会粘在底部,而不是顶部。

extension WKWebView {
func adjustInsets() {
parentViewController?.automaticallyAdjustsScrollViewInsets = false
scrollView.contentInset = .zero
scrollView.scrollIndicatorInsets = .zero
scrollView.contentOffset = .zero
}
}

结果是这样的:

有灰色边框。

full border

我试过这个:

  1. 使用 .white 或 .clear 设置 View 、pdfWebView 和 pdfWebView.scrollView 的背景

  2. webView.isOpaque = false(这是唯一一个去除灰色底部部分但不去除边框的方法)

enter image description here

  1. 我使用了一个扩展来为所有 subview 设置 .clear 颜色

    extension UIView {
    func clearBackgrounds() {
    self.backgroundColor = UIColor.clear
    for subview in self.subviews {
    subview.clearBackgrounds()
    }
    }
    }

无法移除边框。我无法编辑pdf,因为这个是从ws下载的,并在多个应用程序中使用。

最佳答案

解决方案:我找到了一个技巧来做到这一点,我认为你可以将它与具有白色背景的 pdf 一起使用。它有想法,你可以用你的设计来操纵它。

self.view.backgroundColor = UIColor.white
let urlString = "http://www.africau.edu/images/default/sample.pdf"
let string = "<html><body marginwidth=\"0\" marginheight=\"0\" style=\"background-color: transparent\"><embed width=\"100%\" height=\"100%\" name=\"plugin\" src=\"\(urlString)\" type=\"application/pdf\"></body></html>"
webView.loadHTMLString(string, baseURL: nil)

编辑:如果你想将它与 base64 编码的 pdf 数据一起使用,你可以与它一起使用:

var pdfBase64String = "" //Your pdf data
if let decodedData = Data(base64Encoded: pdfBase64String, options: .ignoreUnknownCharacters) {
pdfWebView.load(decodedData, mimeType: "application/pdf", characterEncodingName: "utf-8", baseURL: URL(fileURLWithPath: ""))
}

旧答案:关闭“WebKitDiskImageCacheEnabled”可以解决这个问题。你能在加载 pdf 之前试试这个吗?

UserDefaults.standard.set(false, forKey: "WebKitDiskImageCacheEnabled")
UserDefaults.standard.synchronize()

关于swift - WKWebView 在边框内显示 pdf,我不想要边框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54144462/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com