[英]UIWebView resizes on loadRequest
我有一個UIWebView
,其中的內容按比例縮放。 然后調整Web視圖的大小以適合內容(見下文),並按預期工作。
web視圖還具有附於加載新頁面的滑動手勢-執行時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? 在網頁的CSS中僅顯示“寬度:100%”!
在這里調整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。
我能想到的就是這些,祝您好運。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.