2010-02-02 19 views

risposta

11

è necessario chiamare -scaleUnitSquareToSize: sulla visualizzazione del documento del singolo fotogramma che si desidera ridimensionare, ad esempio, il telaio principale:

[[[[webView mainFrame] frameView] documentView] scaleUnitSquareToSize:NSMakeSize(1.5, 1.5)]; 
[[[[webView mainFrame] frameView] documentView] setNeedsDisplay:YES]; 
+1

Ciò porta al contenuto da ritagliare a destra a 1/1 (ovvero 2/3) dei limiti della vista, proprio come confermano i commenti sulla risposta di @Wanderer. Anche il ridimensionamento della superView del documentView non funziona, perché il puntatore del mouse non funziona correttamente (come indicato anche nei commenti dell'altra risposta). Quindi, nessuna delle risposte qui funziona per me finora (il 10.10.5) –

+0

Vedi anche: http://stackoverflow.com/questions/23010634/zooming-in-and-out-in-webview-cocoa –

-2

Una WebView è una NSView, quindi un modo sarebbe to send it a scaleUnitSquareToSize: message.

+0

Perché una WebView è in realtà un insieme di gestione abbastanza complesso Le viste nidificate, in realtà non si può semplicemente chiamare '-scaleUnitSquareToSize:' sull'oggetto principale 'WebView'. –

5

o si può provare il seguente:

- (IBAction)takeZoom:(NSSlider *)sender { 
    WebView *aWebView = [[window.contentView subviews] lastObject]; 
    NSView *clipView = [[[[aWebView mainFrame] frameView] documentView] superview]; 
    float scale = pow(4, [sender floatValue])/(clipView.frame.size.width/clipView.bounds.size.width); 
    [clipView scaleUnitSquareToSize:NSMakeSize(scale, scale)]; 
    [clipView setNeedsDisplay:YES]; 
} 
+0

Impostazione del la scala nella vista clip sembra essere il modo corretto per farlo. Sono troppo stanco per colpire così duramente, ma il suggerimento di Rob sopra riportato è in scala, ma lascia anche l'area di scorrimento del contenuto, quindi ottieni una pagina ridimensionata, ma un 'gioco di artefatti' di pixel spezzati sul lato destro della visualizzazione web . Ho appena tirato fuori le righe 2,4,5 della routine sopra e sembra funzionare. La vista del mio report è ridimensionata a una visualizzazione Web in un pannello di dialogo. Grazie Viandante! –

+2

Funziona alla grande per me! La risposta accettata sarebbe stata tagliata in modo inadeguato. – Wevah

+0

State entrambi cercando di ridimensionare in modo perfetto la panoramica superstata di documentView? Sto vedendo il ritaglio a destra e il reflow errato. Stai ridimensionando solo una volta, o più volte, come nei pulsanti di zoom in & out sotto il controllo utente? scaleUnitSquareToSize non funziona come ci si potrebbe aspettare in questa circostanza, ho finalmente trovato questo Apple Q & A che getta un po 'di luce https://developer.apple.com/library/mac/#qa/qa2004/qa1346.html ma qualcosa non lo è ancora t giusto Usando la categoria lì, sto usando essenzialmente: clipView = [documentView superview]; clipView.scale = NSMakeSize (scala, scala); clipView.needsDisplay = SI; –

2

Javascript è il tuo miglior amico:

[_webview stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.zoom = \"0.5\""];