मैं छवि को कैप्चर करने की कोशिश कर रहा हूं कि वेबव्यू उपयोगकर्ता को प्रदर्शित कर रहा है, इसलिए मैं वेब पेज का कुछ रंग विश्लेषण कर सकता हूं। जब मैं उसे अपने जनक है से छवि प्राप्त करने की कोशिश, मैं मूल रूप से एक सफेद बॉक्स मिल रहा है, भले ही पेज गाया गया है:WKWebView स्क्रीनशॉट
func makeImageSnapshot()-> (NSImage)
{
let imgSize = self.view.bounds.size
let bir = self.viewbitmapImageRepForCachingDisplayInRect(self.webView!.view.bounds)
bir.size = imgSize
self.webView.cacheDisplayInRect(self.view.bounds, toBitmapImageRep:bir)
let image = NSImage(size:imgSize)
image.addRepresentation(bir)
self.image = image
return image
}
func saveSnapshot()
{
let imgRep = self.image!.representations[0]
let data = imgRep.representationUsingType(NSBitmapImageFileType.NSPNGFileType, properties: nil)
data.writeToFile("/tmp/file.png", atomically: false)
}
यह मेरे लिए लगता है कि मैं वास्तविक के गुणों के लिए उपयोग नहीं कर सकते वेब व्यू के अंदर देखें (इस मामले में सीमाएं)। जब मैंने इसे तक पहुँचने का प्रयास, संकलक barfs:
/Users/josh/Canary/MacOsCanary/canary/canary/Modules/Overview/Overview.swift:55:37: '(NSView !, stringForToolTip: NSToolTipTag, बिंदु : एनएसपीओटी, उपयोगकर्ता डेटा: असुरक्षित पॉइंटर <()>) -> स्ट्रिंग! ' 'सीमा' नामक सदस्य नहीं है
मेरा अनुमान है कि यह ओएस एक्स और आईओएस द्वारा उपयोग किए जाने वाले एक्सटेंशन दृष्टिकोण के कारण हो रहा है। कोई विचार, या क्या मैं सिर्फ विरासत WebView का उपयोग करने के लिए वापस जाना चाहिए?
आप स्ट्रिंग पर "सीमाएं" तक पहुंचने का प्रयास कर रहे हैं! – nhgrif
@ जॉश क्या आपको आईओएस के लिए समाधान मिला है? वर्तमान में मैं snapshotViewAfterScreenUpdates का उपयोग कर रहा हूँ। लेकिन मुझे वेबव्यू प्रस्तुत करने के बाद इसे कॉल करना होगा, इसलिए मैंने 0.1 सेकंड की प्रतीक्षा की है फिनिशनविगेशन और स्नैपशॉटव्यूएफ्टरस्क्रीनअपडेट्स को कॉल करें। बहुत ही विश्वसनीय और भरोसेमंद नहीं है ( – sidslog