如果您正在加载 PDF 并且想要不同于标准灰色的背景颜色,则似乎有必要等到文档加载完毕,然后清除子视图的背景。使用 a WKWebView
over a PDFView
(iOS 11+)的优点是WKWebView
s 具有双击缩放和内置页数指示器,并且与旧版本的 iOS 兼容。
应该注意的是,像这样深入研究系统视图并不是一个好习惯,因为 Apple 可以随时更改实现,可能会破坏解决方案。
以下是我在 Swift 4 中实现黑色背景的 PDF 预览控制器的方法:
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()
}
}
}