我有一个自定义视图,该视图添加了这样的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
}
}
结果是这样的:
有一个灰色边框。
我已经尝试过了:
使用.white或.clear
webView.isOpaque = false
(这是除去灰色底部的唯一对象,但不包括边框)
我使用了扩展程序来为所有子视图设置.clear颜色
extension UIView {
func clearBackgrounds() {
self.backgroundColor = UIColor.clear
for subview in self.subviews {
subview.clearBackgrounds()
}
}
}
删除边框无效。我无法编辑pdf,因为该pdf是从ws下载的,并且已在多个应用中使用。
答案 0 :(得分:2)
解决方案: 我发现了一个技巧,我认为您可以将其与具有白色背景的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()
答案 1 :(得分:0)
我将在此自定义视图中使用适用于iOS 11 +的PDFKit,并回退到WKWebView的早期版本。 PDFView没有任何灰色背景。