簡體   English   中英

UIWebView在loadRequest上調整大小

[英]UIWebView resizes on loadRequest

我有一個UIWebView ,其中的內容按比例縮放。 然后調整Web視圖的大小以適合內容(見下文),並按預期工作。

web視圖還具有附於加載新頁面的滑動手勢-執行時loadRequestwebview下一個頁面有一個短暫的閃爍回到網頁視圖的初始寬度。 我已經確認使用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大小。

是什么導致這種閃爍?

閃爍的網頁視圖

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM