UIWebView调整loadRequest

我有一个UIWebView ,其中的内容被缩放以适合。 然后调整webview的大小以适应内容(见下文),并按预期工作。

webview还附带了一个轻扫手势来加载新页面 - 当在下一页的webview上执行loadRequest时,会有瞬间闪烁返回到webview的初始宽度。 我已经确认使用NSTimerUILabel来更改框架以显示框架的宽度。

以下是调整大小的代码:

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大小。

什么可能导致这种闪烁?

闪烁的web视图


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