UIWebView调整loadRequest
我有一个UIWebView
,其中的内容被缩放以适合。 然后调整webview的大小以适应内容(见下文),并按预期工作。
webview还附带了一个轻扫手势来加载新页面 - 当在下一页的webview
上执行loadRequest
时,会有瞬间闪烁返回到webview的初始宽度。 我已经确认使用NSTimer
和UILabel
来更改框架以显示框架的宽度。
以下是调整大小的代码:
string bookHeightS = bookWebview.EvaluateJavascript ("document.getElementsByTagName('body')[0].scrollHeight");
string bookWidthS = bookWebview.EvaluateJavascript ("document.getElementsByTagName('body')[0].offsetWidth");
nfloat bookHeight = 0;
nfloat.TryParse (bookHeightS, out bookHeight);
nfloat bookWidth = 0;
nfloat.TryParse (bookWidthS, out bookWidth);
nfloat scaling = bookWebview.Frame.Height / bookHeight;
nfloat initialWidth = bookWebview.Frame.Width;
nfloat newWidth = scaling * bookWidth;
CGRect frame = new CGRect (bookWebview.Frame.Location, new CGSize (newWidth, bookWebview.Frame.Height));
if (frame.Width != bookWebview.Frame.Width) {
bookWebview.Frame = frame;
}
该代码由LoadFinished
上的LoadFinished
委托调用。
我试着设置webview的scrollview的框架和webview的ContentSize
大小。
什么可能导致这种闪烁?
UIWebView的webViewDidFinishLoad委托在加载网页时会被多次调用,并且可能的原因是您的网页大小不同,并且您试图通过将UIWebView的框架更改为内容大小来适应它们(根据您的代码) ,为什么不修正你的UIWebView的框架,并让你的网页适合你的UIWebView? 只有“宽度:100%”在您的网页的CSS!
调整webview框架的大小并不完全正确。 一旦加载请求[uiwebview loadRequest:]成功完成,LoadFinished处理程序就会触发,并不意味着您的HTML内容(DOM)的执行已经完成。 这里有几个注释可能会有所帮助:
1-确保您在HTML设计中包含视图端口标记以保持填充方面。 (头部)
<meta name="viewport" content="width=device-width, user-scalable=no">
2-检查UIWebView内容模式(缩放比例是默认的),如果需要的话,检查超增量渲染(取决于您的设计)
3-实际上,当Dom元素已经加载并以HTML格式呈现时,无法捕捉到。 也许你可以在那里包含一些装载器,并且有一个超时(记得在页面卸载时清除它)
4-如果你的设计有一些CSS标准,或许你需要考虑100%的元素宽度来填充页面。
5-如果使用自动布局,只需修复UIWebview的框架,而不是在每次滑动时处理WebViewFrame。
我能想到的就是这些,祝你好运。
链接地址: http://www.djcxy.com/p/31075.html上一篇: UIWebView resizes on loadRequest
下一篇: Heroku: Spring Boot Gradle app with https tomcat server and certificate pinning