मेरे पास एक कस्टम व्यू है जो इस तरह एक 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 पर, कभी-कभी पीडीएफ ऊपर की बजाय नीचे से चिपक जाता था।
extension WKWebView {
func adjustInsets() {
parentViewController?.automaticallyAdjustsScrollViewInsets = false
scrollView.contentInset = .zero
scrollView.scrollIndicatorInsets = .zero
scrollView.contentOffset = .zero
}
}
परिणाम यह है:
एक ग्रे बॉर्डर है।
मैंने यह कोशिश की है:
दृश्य, pdfWebView और pdfWebView.scrollView पृष्ठभूमि को .white या .clear के साथ सेट करना
webView.isOpaque = false
(यह अकेला है जो ग्रे के निचले हिस्से को हटाता है - लेकिन बॉर्डर नहीं)
मैंने सभी चाइल्ड व्यू के लिए .clear रंग सेट करने के लिए एक एक्सटेंशन का उपयोग किया है
extension UIView { func clearBackgrounds() { self.backgroundColor = UIColor.clear for subview in self.subviews { subview.clearBackgrounds() } } }
सीमा हटाने के लिए कुछ भी काम नहीं करता है। मैं पीडीएफ संपादित नहीं कर सकता, क्योंकि यह डब्ल्यूएस से डाउनलोड किया जाता है और कई ऐप्स में उपयोग किया जाता है।
2 जवाब
समाधान: मुझे ऐसा करने के लिए एक तरकीब मिली, मुझे लगता है कि आप इसका उपयोग पीडीएफ के साथ कर सकते हैं जिसमें सफेद पृष्ठभूमि है। इसका विचार है, आप इसे अपने डिजाइन के साथ जोड़-तोड़ कर सकते हैं।
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)
संपादित करें: यदि आप इसे बेस 64 एन्कोडेड पीडीएफ डेटा के साथ उपयोग करना चाहते हैं, तो आप इसके साथ उपयोग कर सकते हैं:
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" को बंद करने से यह समस्या ठीक हो सकती है। क्या आप पीडीएफ लोड करने से पहले इसे आजमा सकते हैं?
UserDefaults.standard.set(false, forKey: "WebKitDiskImageCacheEnabled")
UserDefaults.standard.synchronize()
मैं इस कस्टम दृश्य में iOS 11 + के लिए PDFKit का उपयोग पिछले संस्करणों के लिए WKWebView में फॉलबैक के साथ करूंगा। PDFView में कोई ग्रे बैकग्राउंड नहीं है।