我做了一个简单的测试项目,在UIView上只有一个UIWebView填充窗口。当UIWebView的宽度与UIView相同时,一切都运行良好。当UIWebView的宽度小于容器的宽度时,水平滚动条会不规则地出现。我加载的网页是一个本地html文件。未设置宽度,因此它应符合浏览器/ UIWebView的宽度。
请帮忙。感谢。
答案 0 :(得分:8)
方法1. webView.scalePageToFit = YES
,但当webView的宽度发生变化时,网页的字体大小会相应改变,为了解决这个问题,你可以尝试方法2:
方法2.在Objective-C代码中动态设置webView的宽度,以便 当UIWebView的宽度发生变化时,通过调用javascript脚本来更改HTML网页的宽度。
int webViewWidth = isPortraitOrLandscape ? 768:1024; // the dynamic width of the webView
NSString *javascript = [NSString stringWithFormat:@"document.getElementsByTagName('body')[0].style.width = '%dpx'", webViewWidth];
[webView stringByEvaluatingJavaScriptFromString:javascript];
通过这样做,webView的宽度可以与实际的HTML网页匹配。
答案 1 :(得分:4)
上述解决方案对我来说并非相当。问题是要将文本换行到适当的浏览器视图大小,而不是缩小内容,也不允许滚动。
我的修复是通过执行一些偷偷摸摸的javascript来强制视口进入html:
javascript = [NSString stringWithFormat:@"var viewPortTag=document.createElement('meta'); \
viewPortTag.id='viewport'; \
viewPortTag.name = 'viewport'; \
viewPortTag.content = 'width=%d; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;'; \
document.getElementsByTagName('head')[0].appendChild(viewPortTag);" , (int)authWebView.bounds.size.width];
[authWebView stringByEvaluatingJavaScriptFromString:javascript];
根据您可能需要或可能不需要的其他视口设置,或者您的网页已经有指定视口的元标记,您的milage可能会有所不同。
javascript的想法来自这个答案:How to insert metatag without using jquery append?
答案 2 :(得分:1)
您可以在<head>
中添加元标记,为视口设置明确的宽度:
<meta name = "viewport" content = "width = 590">
答案 3 :(得分:0)
Tyr进行网页浏览模式缩放以填充。