【发布时间】:2019-01-11 10:17:23
【问题描述】:
我有一个自定义视图,可以像这样添加 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
设置视图、pdfWebView 和 pdfWebView.scrollView 背景
webView.isOpaque = false(这是去除灰色底部的唯一一个 - 但不是边框)
-
我使用了一个扩展来为所有子视图设置 .clear 颜色
extension UIView { func clearBackgrounds() { self.backgroundColor = UIColor.clear for subview in self.subviews { subview.clearBackgrounds() } } }
没有办法移除边框。我无法编辑pdf,因为这是从ws下载并用于多个应用程序的。
【问题讨论】:
-
您好,您可以尝试使用
UIScreen.main.bounds而不是.zero来初始化WebView 吗? -
不,它不起作用。在
webView(::didFinish)中再次显示所有内容。pdfWebView将屏幕的一部分作为约束放置。WKWebView(frame: )可以有任何框架。不要紧。无论如何谢谢。