Ich versuche, das Bild, das die Webansicht dem Benutzer anzeigt, zu erfassen, damit ich eine Farbanalyse der Webseite vornehmen kann. Wenn ich versuche, das Bild zu bekommen von ihm Eltern, ich im Grunde bin ein weißes Feld bekommen, auch wenn die Seite gerendert hat:WKWebView Screenshots
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)
}
Es sieht für mich wie ich keinen Zugriff auf die Eigenschaften der tatsächlichen bekommen Ansicht (in diesem Fall die Grenzen) innerhalb des WebView. Wenn ich versuche, darauf zuzugreifen, wird der Compiler barfs:
/Users/josh/Canary/MacOsCanary/canary/canary/Modules/Overview/Overview.swift:55:37: '(NSView !, StringForToolTip: NSToolTipTag, Punkt : NSPoint, userData: UnsafePointer <()>) -> String! ' hat kein Mitglied namens "Grenzen"
Meine Vermutung ist, dass dies aufgrund der Erweiterungen von OS X und iOS geschieht. Irgendwelche Ideen, oder sollte ich einfach zum alten WebView zurückkehren?
Sie versuchen, auf "Grenzen" auf einem String zuzugreifen !. – nhgrif
@Josh hast du eine Lösung für iOS gefunden? Derzeit verwende ich snapshotViewAfterScreenUpdates. Aber ich muss es aufrufen, nachdem die Webansicht gerendert wurde, also warte ich in didFinishNavigation für 0.1 Sekunden und rufe snapshotViewAfterScreenUpdates auf. Nicht sehr praktisch und zuverlässig ( – sidslog