मेरे पास एक कस्टम व्यू है जो इस तरह एक 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
    }
}

परिणाम यह है:

एक ग्रे बॉर्डर है।

full border

मैंने यह कोशिश की है:

  1. दृश्य, pdfWebView और pdfWebView.scrollView पृष्ठभूमि को .white या .clear के साथ सेट करना

  2. webView.isOpaque = false (यह अकेला है जो ग्रे के निचले हिस्से को हटाता है - लेकिन बॉर्डर नहीं)

enter image description here

  1. मैंने सभी चाइल्ड व्यू के लिए .clear रंग सेट करने के लिए एक एक्सटेंशन का उपयोग किया है

    extension UIView {
        func clearBackgrounds() {
            self.backgroundColor = UIColor.clear
            for subview in self.subviews {
                subview.clearBackgrounds()
            }
        }
    } 
    

सीमा हटाने के लिए कुछ भी काम नहीं करता है। मैं पीडीएफ संपादित नहीं कर सकता, क्योंकि यह डब्ल्यूएस से डाउनलोड किया जाता है और कई ऐप्स में उपयोग किया जाता है।

4
Laura Calinoiu 11 जिंदा 2019, 13:17

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()
2
Em. 17 जिंदा 2019, 13:53

मैं इस कस्टम दृश्य में iOS 11 + के लिए PDFKit का उपयोग पिछले संस्करणों के लिए WKWebView में फॉलबैक के साथ करूंगा। PDFView में कोई ग्रे बैकग्राउंड नहीं है।

0
Laura Calinoiu 16 जिंदा 2019, 07:08