2010-02-02 3 views

Antwort

11

Sie benötigen -scaleUnitSquareToSize: auf der Dokumentenansicht des einzelnen Rahmens nennen, die Sie zum Beispiel den Hauptrahmen ändern möchten:

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

Dies führt dazu, dass der Inhalt auf der rechten Seite bei 1/1,5 (d. H. 2/3) der Grenzen der Ansicht abgeschnitten wird, genau wie die Kommentare in der Antwort von @Wanderer bestätigen. Die Skalierung der superView von documentView funktioniert auch nicht, weil dann der Mauszeiger nicht korrekt arbeitet (wie auch in den Kommentaren der anderen Antwort angegeben). Also, keine der Antworten hier funktioniert für mich bisher (am 10.10.5) –

+0

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

-2

Ein WebView ist ein NSView, also wäre ein Weg to send it a scaleUnitSquareToSize: message.

+0

Weil ein WebView ist eigentlich eine ziemlich komplexe Reihe von Manag Wenn Sie verschachtelte Ansichten verwenden, können Sie nicht einfach '-scaleUnitSquareToSize:' auf dem Hauptobjekt 'WebView' aufrufen. –

5

Oder Sie können versuchen, die folgenden:

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

Einstellung der Die Skalierung in der Clip-Ansicht scheint der richtige Weg dafür zu sein. Ich bin zu müde, um so hart zu schlagen, aber Robs Vorschlag oben skaliert, aber vergrößert auch den Bildlauf-Inhaltsbereich, so dass Sie eine skalierte Seite erhalten, aber einen "Artefakt-Spielplatz" mit gebrochenen Pixeln auf der rechten Seite der Web-Ansicht . Ich habe gerade die Zeilen 2,4,5 der obigen Routine herausgezogen und das scheint zu funktionieren. Meine Berichtsansicht wird in einer Webansicht in einem Dialogfeld skaliert. Danke Wanderer! –

+2

Das funktioniert gut für mich! Die angenommene Antwort würde unpassend abgeschnitten werden. – Wevah

+0

Sie finden beide die Skalierung der Superansicht von documentView perfekt skalieren? Ich sehe Clipping beim richtigen & inkorrekten Reflow. Skalieren Sie nur einmal oder wiederholt wie beim Ein- und Auszoomen unter Benutzersteuerung? scaleUnitSquareToSize funktioniert nicht so, wie man es unter diesen Umständen erwarten würde, ich habe endlich dieses Apple Q & A gefunden, das ein wenig Licht ins Licht gerückt hat https://developer.apple.com/library/mac/#qa/qa2004/qa1346.html aber etwas ist immer noch nicht t richtig. Ich benutze im Wesentlichen die Kategorie dort: clipView = [documentView superview]; clipView.scale = NSMakeSize (Skalierung, Skalierung); clipView.needsDisplay = YES; –

2

Javascript ist Ihr bestfriend:

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