2010-02-02 11 views

Respuesta

11

es necesario llamar a -scaleUnitSquareToSize: en la vista del documento de la trama individual que desea cambiar el tamaño, por ejemplo, el marco principal:

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

Esto lleva al contenido recortado a la derecha en 1/1.5 (es decir, 2/3) de los límites de la vista, al igual que los comentarios sobre la respuesta de @Wanderer confirman. Tampoco funciona escalar la supervista de documentView, porque entonces el puntero del mouse no funciona correctamente (como también se indica en los comentarios de la otra respuesta). Por lo tanto, ninguna de las respuestas aquí funciona para mí hasta el momento (en 10.10.5) –

+0

Ver también: http://stackoverflow.com/questions/23010634/zooming-in-and-out-in-webview-cocoa –

-2

Un WebView es un NSView, por lo que una forma sería to send it a scaleUnitSquareToSize: message.

+0

Porque un WebView es en realidad un conjunto bastante complejo de ed vistas anidadas, en realidad no puede simplemente llamar '-scaleUnitSquareToSize:' en el objeto principal 'WebView'. –

5

o puede probar lo siguiente:

- (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

Configurar el la escala en la vista de clip parece ser la forma correcta de hacerlo. Estoy demasiado cansado para pegar así de duro, pero la sugerencia de Rob anterior escala, pero también aumenta el área de contenido de desplazamiento, por lo que obtienes una página escalada, pero un "patio de juegos de artefactos" de píxeles rotos en el lado derecho de la vista web . Acabo de sacar las líneas 2,4,5 de la rutina anterior y parece funcionar. Mi vista de informe se escala a una vista web en un panel de diálogo. Gracias Wanderer! –

+2

¡Esto funciona muy bien para mí! La respuesta aceptada sería cortada inapropiadamente. – Wevah

+0

¿Están buscando escalar la supervista de documentView para escalar perfectamente? Estoy viendo recorte en el derecho y reflujo incorrecto. ¿Está escalando solo una vez, o varias veces, como en los botones de acercar y alejar bajo el control del usuario? scaleUnitSquareToSize no funciona como uno podría esperar en esta circunstancia, finalmente encontré este Apple Q & A que arrojó algo de luz https://developer.apple.com/library/mac/#qa/qa2004/qa1346.html pero algo todavía no es así t derecho. Usando la categoría allí, estoy usando esencialmente: clipView = [documentView superview]; clipView.scale = NSMakeSize (escala, escala); clipView.needsDisplay = SÍ; –

2

Javascript es tu mejor amigo:

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