UIWebView不会缩放适合的内容

我有一个webview这是层次结构中的顶级窗口,已被声明如下所示。 但是,它并不适合缩放页面。 页面左上angularalignment,但不缩放,尽pipescalesPageToFit属性设置为YES。 任何帮助将不胜感激。

webLookupView = [[UIWebView alloc] initWithFrame:CGRectMake(16, 63, 289, 327)]; webLookupView.backgroundColor = [UIColor lightGrayColor]; webLookupView.dataDetectorTypes = UIDataDetectorTypeAll; webLookupView.scalesPageToFit = YES; 

iOS5提供了更好的解决scheme

从webViewDidFinishLoad调用它

 - (void)zoomToFit { if ([theWebView respondsToSelector:@selector(scrollView)]) { UIScrollView *scrollView = [theWebView scrollView]; float zoom = theWebView.bounds.size.width / scrollView.contentSize.width; scrollView.minimumZoomScale = zoom; [scrollView setZoomScale:zoom animated:YES]; } } 

我后来发现,一些网页是正确的缩放,但有些不是。 对于没有正确缩放的网页,javascript可以用来控制缩放,如下所示:

 NSString *jsCommand = [NSString stringWithFormat:@"document.body.style.zoom = 1.5;"]; [webLookupView stringByEvaluatingJavaScriptFromString:jsCommand]; 

你可以使用下面的代码:

 self.webView.scalesPageToFit = YES; self.webView.contentMode = UIViewContentModeScaleAspectFit; 

in - (void)webViewDidFinishLoad:(UIWebView *)webView methodviewDidLoad

如果您有权访问您正在加载的HTML,则可以在头中查找以下元标记:

 <meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" /> 

在Swift2中

 self.webView.scalesPageToFit = true self.webView.contentMode = UIViewContentMode.ScaleAspectFit 

我的解决scheme很快:

需要在界面构build器中检查“在webView上缩放页面以适合”。

使用UIWebViewDelegate。

 func webViewDidFinishLoad(webView: UIWebView) { let zoom = webView.bounds.size.width / webView.scrollView.contentSize.width webView.scrollView.setZoomScale(zoom, animated: true) } 

对于Swift 3 ,使用RunLoop的有效答案:

self.webView.stringByEvaluatingJavaScript(from: "document.body.style.zoom = 1.5;")

正如mprivate 在这里提到的,你可以更新UIWebView的缩放级别。

 - (void)webViewDidFinishLoad:(UIWebView *)theWebView { CGSize contentSize = theWebView.scrollView.contentSize; CGSize viewSize = theWebView.bounds.size; float rw = viewSize.width / contentSize.width; theWebView.scrollView.minimumZoomScale = rw; theWebView.scrollView.maximumZoomScale = rw; theWebView.scrollView.zoomScale = rw; } 

实现这个的另一种方法是将注入js代码的webViewDidFinishLoad RunLoop说。

 - (void)webViewDidFinishLoad:(UIWebView *)webView { CGFloat scale = 0.8; // the scale factor that works for you NSString *js = [NSString stringWithFormat:@"document.body.style.zoom = %f;",scale]; [webView stringByEvaluatingJavaScriptFromString:js]; } 

在xCode 8.3.3中,转到Web视图所在的视图/场景的情节提要,并在“属性”检查器部分中选中“缩放页面以适合”。 同样selectScale to Fill作为内容模式。

在你的ViewController的viewDidLoad中试试这个

 [self.myWebView setFrame:CGRectMake(self.view.frame.origin.x, self.view.frame.origin.y, self.view.frame.size.width, self.view.frame.size.height)]; 
  • 我也有我的故事板中的webview设置为“scalePageToFit”和viewmode设置为“Aspect Fit”。

在界面生成器中有“Scale to Fit”选项,所以它应该是程序化的。