Sto cercando di catturare l'immagine che la pagina Web sta visualizzando all'utente, quindi posso eseguire alcune analisi del colore della pagina web. Quando cerco di ottenere l'immagine dal suo genitore, io sono fondamentalmente ottenendo una scatola bianca, anche se la pagina ha reso:WKWebView Screenshot
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)
}
Sembra a me come io non posso ottenere l'accesso alle proprietà del reale visualizza (in questo caso i limiti) all'interno della webView. Quando provo ad accedervi, i barfs compilatore:
/Users/josh/Canary/MacOsCanary/canary/canary/Modules/Overview/Overview.swift:55:37: '(NSView !, stringForToolTip: NSToolTipTag, punto : NSPoint, userData: UnsafePointer <()>) -> String! ' non ha un membro chiamato 'bounds'
La mia ipotesi è che questo stia accadendo a causa dell'approccio delle estensioni usato da OS X e iOS. Qualche idea o dovrei tornare a utilizzare la legacy WebView?
Stai provando ad accedere a "limiti" su una stringa !. – nhgrif
@Josh hai trovato una soluzione per iOS? Attualmente sto usando snapshotViewAfterScreenUpdates. Ma devo chiamarlo dopo che la webview è stata renderizzata, quindi aspetto un 0.1 sec in didFinishNavigation e chiamo snapshotViewAfterScreenUpdates. Non molto comodo e affidabile ( – sidslog