2010-02-02 98 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\""];