Se si sta caricando un file PDF e si desidera un colore di sfondo diverso rispetto al grigio standard, sembra che sia necessario attendere fino a quando viene caricato il documento, quindi cancella gli sfondi delle sottoview. Il vantaggio dell'uso di WKWebView
su un PDFView
(iOS 11+) è che gli WKWebView
s hanno il doppio tocco per lo zoom e un indicatore di conteggio delle pagine integrato e sono compatibili con le versioni precedenti di iOS.
Va notato che non è una buona pratica scavare in viste di sistema come questa, in quanto Apple può modificare l'implementazione in qualsiasi momento, potenzialmente rompendo la soluzione.
Ecco come ho implementato un controller PDF di anteprima con uno sfondo nero a Swift 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()
}
}
}
Grazie, l'ho provato, e anche mettere il colore: trasparente; nel file css, inoltre, non funziona. Lo sfondo è sempre bianco. –