2010-02-02 85 views

回答

11

你需要調用-scaleUnitSquareToSize:上要調整個體框架的文檔視圖,例如主框架:

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

這導致內容被截取在視圖邊界的1/1.5(即2/3)的右側,就像@Wanderer回答的評論所證實的那樣。縮放documentView的superView也不起作用,因爲那時鼠標指針不能正確工作(正如其他答案的註釋中所述)。所以,到目前爲止,這裏的答案都不適用於我(在10.10.5) – 2016-08-19 19:46:51

+0

另請參閱:http://stackoverflow.com/questions/23010634/zooming-in-and-out-in-webview-cocoa – 2016-08-19 20:00:05

-2

WebView是一個NSView,所以一種方式是to send it a scaleUnitSquareToSize: message

+0

因爲WebView實際上是一套相當複雜的管理工具但是你實際上不能在主WebView對象上調用'-scaleUnitSquareToSize:'。 – 2010-02-02 04:55:27

5

或者你可以嘗試以下方法:

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

設置剪輯視圖中的縮放似乎是正確的方法。我太累了,難以實現這一點,但Rob的上述建議確實可以擴展,但同時也會擴大滾動內容區域,因此您可以獲得一個縮放頁面,但是在Web視圖右側會出現一個虛構像素的「人造物遊樂場」 。我剛剛拿出上述例行的2,4,5行,似乎工作。我的報告視圖被縮放到對話框中的網頁視圖。謝謝流浪者! – 2011-08-23 05:23:35

+2

這對我很好!被接受的答案會被不恰當地剪掉。 – Wevah 2012-07-14 11:26:23

+0

你們都找到縮放documentView的超級視圖來完美縮放嗎?我看到正確和不正確的迴流剪裁。你是否縮放一次或反覆縮放,如用戶控制下的放大和縮小按鈕? scaleUnitSquareToSize在這種情況下不能像預期的那樣工作,我終於找到了這個問題的Apple Q&A,https://developer.apple.com/library/mac/#qa/qa2004/qa1346.html但是還有一些問題仍然存在,沒錯。使用那裏的類別,我基本上使用:clipView = [documentView superview]; clipView.scale = NSMakeSize(刻度,刻度); clipView.needsDisplay = YES; – 2012-08-14 16:59:42

2

Javascript是你最好的朋友:

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