iPhone – 自动调整UIWebView内容不符合框架

我生成一个UIWebView到我的viewDidLoad方法,具有一个小尺寸(让我们说像50×70)。 然后我把它放入一个超级UIView。

我想使其内容适合webView框架。 要做到这一点,我写道:

oneView = [[UIWebView alloc] initWithFrame:CGRectMake(x, y, W, H)]; oneView.backgroundColor = [UIColor whiteColor]; oneView.autoresizingMask = UIViewAutoresizingFlexibleWidth; oneView.scalesPageToFit = YES; oneView.autoresizesSubviews = YES; [self.view addSubview:oneView]; [oneView loadRequest:/*some request*/]; 

但是这样做,网页不会调整到UIWebView的框架。 它似乎被缩放到其他的东西,小于超视图的框架,比webview的更广泛。

在这里输入图像说明

如果我将webview框架大小设置为整个超级视图的大小,那就没问题。
我如何强制网页内容(真正的www内容),以适应“减less”UIWebView的框架?

答案是:你已经这样做了,但是有限制。

看看下面的截图:

Screeshot 1,scalesPageToFit YES和NO

两个webview都有相同的宽度。 在较低的一个页面完全适合。

在这里输入图像说明

Screeshot 2,scalesPageToFit都是YES,但设置的宽度较小

这两个webview尝试适合页面,但它不会因为有一个大小的限制。

在这里输入图像说明

对于那些面临同样问题的人,可以closuresUIWebView本地滚动

 self.webView.scrollView.scrollEnabled = NO; 

并添加一个单独的scrollView ,它将处理滚动和缩放而不是webView的原生滚动。 下一个工具

 - (void) webViewDidFinishLoad:(UIWebView *)webView { CGRect frame = _webView.frame; CGSize fittingSize = [_webView sizeThatFits:_webView.scrollView.contentSize]; frame.size = fittingSize; _webView.frame = frame; self.scrollView.contentSize = self.webView.scrollView.contentSize; } 

设置适当的webView框架。 希望这有助于某人。 好的编码!

试试这个,这对我有用。

 NSString *strTemplateHTML = [NSString stringWithFormat:@"<html><head><style>img{max-width:100%%;height:auto !important;width:auto !important;};</style></head><body style='margin:0; padding:0;'>%@</body></html>", @"insert your html content here"]; [webView loadHTMLString:strTemplateHTML baseURL:nil]; 

您可以执行以下操作:

 oneview.contentMode = UIViewContentModeScaleAspectFit; 

这将使你的观点内容随着你的观点的增长而增长。 内容将尽可能增长,同时仍然适合UIWebView,而不会失真。

这个属性还有其他的选项,你可以在iOS的视图编程指南中find更复杂的解释,以及显示每个效果的图片。

请注意,您设置的自动确定屏蔽将使视图本身只有在其超级视图增长时才会增长。 如果创build小型UIWebView并且self.view不增长时,self.view已经很大,UIWebView将不会增长。 您可能已经意识到了这一点,但为了以防万一,我们添加了它,因为在这段代码中我们看不到self.view的框架。

希望这是有帮助的。

对于Swift 2.2我也是这样做的

 //Document file url var docUrl = NSURL(string: "https://www.google.co.in/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0ahUKEwjjwPSnoKfNAhXFRo8KHf6ACGYQFggbMAA&url=http%3A%2F%2Fwww.snee.com%2Fxml%2Fxslt%2Fsample.doc&usg=AFQjCNGG4FxPqcT8RXiIRHcLTu0yYDErdQ&sig2=ejeAlBgIZG5B6W-tS1VrQA&bvm=bv.124272578,d.c2I&cad=rja") let req = NSURLRequest(URL: docUrl!) webView.delegate = self //here is the sole part webView.scalesPageToFit = true webView.contentMode = .ScaleAspectFit webView.loadRequest(req) 

对于Swift 3,我也是这样做的

 DispatchQueue.main.async { if let finalURL = URL(string: urlString) { let request = URLRequest(url: finalURL) // self.webView.sizeToFit() self.webView.scalesPageToFit = true self.webView.contentMode = .scaleAspectFit self.webView.loadRequest(request) } } 

尝试这个:

 [oneView setScalesPageToFit:YES]; 

… 代替:

 oneView.scalesPageToFit = YES; 

希望有所帮助。