如果你加載PDF,想比標準不同的灰色背景色,似乎有必要等到文件被加載,然後清除子視圖的背景。與PDFView
(iOS 11+)相比,使用WKWebView
的優勢在於WKWebView
具有雙擊縮放功能和內置的頁數計數指示器,並且與舊版本的iOS兼容。
需要注意的是,挖掘這種系統視圖並不是一個好習慣,因爲Apple可以隨時更改實現,有可能破壞解決方案。
這裏是我是如何實現一個PDF預覽控制器與斯威夫特4黑色背景:
class SomeViewController: UIViewController {
var observer: NSKeyValueObservation?
var url: URL
init(url: URL) {
self.url = url
super.init(nibName: nil, bundle: nil)
}
func viewDidLoad() {
super.viewDidLoad()
self.view.backgroundColor = UIColor.black
let webView = WKWebView()
webView.translatesAutoResizingMaskIntoConstraints = false
self.view.addSubview(webView)
NSLayoutConstraint.activate([
webView.topAnchor.constraint(equalTo: self.view.topAnchor),
webView.leftAnchor.constraint(equalTo: self.view.leftAnchor),
webView.rightAnchor.constraint(equalTo: self.view.rightAnchor),
webView.bottomAnchor.constraint(equalTo: self.view.bottomAnchor)
])
self.observer = webView.observe(\.isLoading, changeHandler: { (webView, change) in
webView.clearBackgrounds()
})
webView.loadFileURL(self.url, allowingReadAccessTo: self.url)
}
}
extension UIView {
func clearBackgrounds() {
self.backgroundColor = UIColor.clear
for subview in self.subviews {
subview.clearBackgrounds()
}
}
}
謝謝,試了一下,也把顏色:透明;在CSS文件中,也不起作用。背景總是白色的。 –