在Cocoa中缩放WebView

在Cocoa中缩放WebView,cocoa,webview,scale,Cocoa,Webview,Scale,如何缩放Web视图的内容?Web视图是NSView,因此一种方法是。您需要在要调整大小的单个框架(例如主框架)的文档视图上调用-scaleUnitSquareToSize:: [[[[webView mainFrame] frameView] documentView] scaleUnitSquareToSize:NSMakeSize(1.5, 1.5)]; [[[[webView mainFrame] frameView] documentView] setNeedsDisplay:YES];

如何缩放Web视图的内容?

Web视图是NSView,因此一种方法是。

您需要在要调整大小的单个框架(例如主框架)的文档视图上调用
-scaleUnitSquareToSize:

[[[[webView mainFrame] frameView] documentView] scaleUnitSquareToSize:NSMakeSize(1.5, 1.5)];
[[[[webView mainFrame] frameView] documentView] setNeedsDisplay:YES];
 [_webview stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.zoom = \"0.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];
}
 [_webview stringByEvaluatingJavaScriptFromString:@"document.documentElement.style.zoom = \"0.5\""];

Javascript是您最好的朋友:

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

因为WebView实际上是一组相当复杂的托管嵌套视图,所以实际上不能在主
WebView
对象上调用
-scaleUnitSquartosize:
。在剪辑视图中设置比例似乎是正确的方法。我已经太累了,不能再重击了,但是Rob上面的建议确实可以缩放,但也可以放大滚动内容区域,这样你就得到了一个缩放过的页面,但是在web视图的右侧有一个由破碎像素组成的“虚拟游乐场”。我刚刚从上面的例行程序中抽出第2、4、5行,这似乎是可行的。“我的报告”视图在对话框面板中缩放为web视图。谢谢流浪者!这对我来说太棒了!被接受的答案会被不适当地删掉。你们都发现将documentView的superview缩放到完美的比例?我在右边看到剪辑&不正确的回流。在用户控制下的放大和缩小按钮中,您是只缩放一次还是重复缩放?scaleUnitSquareToSize在这种情况下可能无法正常工作,我终于找到了这个苹果问答,这让我了解了一些情况,但有些事情仍然不对劲。使用那里的类别,我基本上使用了:clipView=[documentView superview];clipView.scale=NSMakeSize(缩放,缩放);clipView.needsDisplay=是;这看起来不错,但WebView中的选择相对于鼠标光标偏移。这导致内容被剪裁在视图边界的1/1.5(即2/3)处的右侧,就像@Loverter confirm在答案上的注释一样。缩放documentView的superView也不起作用,因为这样鼠标指针就不能正常工作(正如另一个答案的注释中所述)。因此,到目前为止,这里的答案都不适用于我(10.10.5)。另请参见: