在 UIWebView 上启用缩放/捏合

Posted

技术标签:

【中文标题】在 UIWebView 上启用缩放/捏合【英文标题】:Enable zooming/pinch on UIWebView 【发布时间】:2011-10-31 08:45:45 【问题描述】:

我有一个带有 pdf 文件的 UIWebView。它工作正常。但是我如何启用对 pdf 文件的缩放?

【问题讨论】:

【参考方案1】:

如果您想以编程方式进行操作,请使用

webView.scalesPageToFit = true; 

如果您使用情节提要,则必须勾选复选框“缩放”缩放页面以适应

【讨论】:

【参考方案2】:

您必须设置 scalesPageToFit=YES 才能在 UIWebView 上进行任何捏合和缩放。它对我有用。

【讨论】:

【参考方案3】:

我知道这个问题已经很老了,但对于每个使用故事板并更喜欢视觉答案的人来说,它就是这样。只需在 WebView 的 Attributes Inspector 中选中此框即可:

【讨论】:

【参考方案4】:

这个UIWebView的缩放逻辑,UIScrollView上不需要添加UIWebView

webView.scalesPageToFit = YES; 唯一的问题是,它会改变字体大小的初始内容,但我找到了其他选项

<UIWebViewDelegate, UIScrollViewDelegate> 添加到您的.h 文件

创建您的UIWebView.

self.mWebview = [[UIWebView alloc] init];
self.mWebview.delegate = self; /// set delegate method of UIWebView
self.mWebview.frame = CGRectMake(0, 35, self.view.bounds.size.width, self.view.bounds.size.height - 80); // set frame whatever you want..
[self.mWebview setOpaque:NO];
self.mWebview.backgroundColor = [UIColor clearColor];
[self.view addSubview:self.mWebview];

加载 html 文件/内容。

NSString* htmlString = [NSString stringWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"File Name"ofType:@"html"] encoding:NSUTF8StringEncoding error:nil];
[self.mWebview loadHTMLString:htmlString baseURL:[NSURL fileURLWithPath:[[NSBundle mainBundle] bundlePath]]];


#pragma mark -
#pragma mark - Webview Delegate Methods

- (void) webViewDidFinishLoad:(UIWebView *)webView

    webView.scrollView.delegate = self; // set delegate method of UISrollView
    webView.scrollView.maximumZoomScale = 20; // set as you want.
    webView.scrollView.minimumZoomScale = 1; // set as you want.

    //// Below two line is for ios 6, If your app only supported iOS 7 then no need to write this.
    webView.scrollView.zoomScale = 2;
    webView.scrollView.zoomScale = 1;


#pragma mark -
#pragma mark - UIScrollView Delegate Methods

- (void)scrollViewDidEndZooming:(UIScrollView *)scrollView withView:(UIView *)view atScale:(float)scale

    self.mWebview.scrollView.maximumZoomScale = 20; // set similar to previous.

注意:我必须在 Mac OS X - 10.9.3 和 Xcode 5.1.1 和 iOS 6.1 及更高版本上进行测试。

我希望这对您有所帮助。 :)

【讨论】:

我不需要 scrollViewDidEndZooming 来让缩放正常工作。不确定该代码的意图是什么,因为它只是将之前设置的相同值重置为完全相同的值! 没错,为什么需要 scrollViewDidEndZooming 部分?但除此之外,出色的答案。它甚至可以通过设置“缩放页面以适应”属性来缩放那些没有被缩放的页面。【参考方案5】:

您可以通过编程方式使用webView.scalesPageToFit=YES;

如果你在 xib 中使用不仅仅是click the check box "Scaling" scales Page to fit

【讨论】:

【参考方案6】:

确保选中“缩放页面以适应”

【讨论】:

您对 PDF 的缩放性能有什么建议吗?我在缩放时有一个恼人的黑色效果。 它启用缩放,但会改变初始比例因子 工作,但这会导致其他事情出现问题..例如***.com/questions/33617217/… 为我工作。谢谢!

以上是关于在 UIWebView 上启用缩放/捏合的主要内容,如果未能解决你的问题,请参考以下文章

在 iOS 10 上的 WKWebView 中打开 PDF 文件时启用捏合缩放手势

在UIWebView上启用缩放/缩放

Swift:如何为 CALayer 启用捏合缩放功能?

在 div 内捏合/缩放,但不是整个页面 [关闭]

防止 UIWebview 上的捏缩放和双击缩放

在 webview_flutter 中启用捏合和缩放,在哪里添加代码片段 [this.webView.getSettings().setBuiltInZoomControls(true);]