1. 程式人生 > >關於UIWebView一個很奇怪問題的另類解決辦法(高度遞增問題)

關於UIWebView一個很奇怪問題的另類解決辦法(高度遞增問題)

近來在處理的一個iPad上的app,用到了UIWebView顯示廣告,廣告有豎屏和橫屏兩種不同的形式。處理方法不難,建立廣告webview,設定frame,加入到view中。旋轉的時候分別load對應的廣告html地址,再設定webview的frame。幾句程式碼,功能實現了,測試也通過了。但多旋轉幾次,會發現有個奇怪的問題,廣告html會不斷被拉伸,高度越來越大。輸出log,看到webview中的contentSize中的height每次遞增8畫素。原來是這個原因,估計是旋轉時,webview的寬度有變化,所以高度也相應的縮放就慢慢增大了。找到了原因,重設contentSize就可以了嘛。事實往往跟想象是有差距的,一測試,問題依舊。這下傻眼了,重設了contentSize,但完全沒效果。再想一下,會不會是有什麼屬性可以控制它的內容不隨大小而縮放的呢,找了一遍,沒找到相應的屬性。各種屬性都試過了,包括scalesPageToFit,通過stringByEvaluatingJavaScriptFromString利用javascript語句設定contentsize高度,reload等等方法,問題依舊,還是解決不了。

正在迷茫之際,想想看是不是設定錯了subview了。之前試過直接設定uiwebview的scrollview的frame,但沒看到有效果。會不會還有其他subview。於是試著遍歷UIWebView的所有subview,結果無意發現有個UIWebBrowserView的子檢視,看看名字覺得這個象是真正顯示web的檢視。於是試試列印這個view的大小,並修改成需要的尺寸,結果驚奇的發現,之前遞增的8畫素就是它增加的,而重設了大小後,拉伸情況再也沒出現了。shit,忍不住爆了一句粗口,想不到改個大小還要費這麼大的勁。是自己瞭解不多還是api的bug呢,想不懂,之前查閱資料的時候,也看過有人問過類似的問題(問題地址:

http://www.devdiv.com/forum.php?mod=viewthread&tid=194580),但沒看到有解決辦法。希望以後可以瞭解到解決這個問題的正統方法。也望有高手能指點迷津,以解開我這個疑問。

解決的程式碼如下:

- (void)fitContentForWebviewResize
{
    for (UIView *subview in m_adView.subviews)
    {
        NSLog(@"subview class %@", NSStringFromClass([subview class]));
        if ([[subview class] isSubclassOfClass: [UIScrollView class]])
        {
            for (UIView *subview2 in subview.subviews)
            {
                NSLog(@"subview class %@", NSStringFromClass([subview2 class]));
                if ([[subview2 class] isSubclassOfClass: NSClassFromString(@"UIWebBrowserView")])
                {
                    CGRect scrollFrame = subview2.frame;
                    NSLog(@"%@", NSStringFromCGRect(scrollFrame));
                    subview2.frame = CGRectMake(0, 0, m_adView.frame.size.width, 100);
                    break;
                }
            }
            CGRect scrollFrame = subview.frame;
            NSLog(@"%@", NSStringFromCGRect(scrollFrame));
            break;
        }
    }
}

相關推薦

關於UIWebView一個奇怪問題的解決辦法高度遞增問題

近來在處理的一個iPad上的app,用到了UIWebView顯示廣告,廣告有豎屏和橫屏兩種不同的形式。處理方法不難,建立廣告webview,設定frame,加入到view中。旋轉的時候分別load對應的廣告html地址,再設定webview的frame。幾句程式碼,功能實現

spring boot:No converter found for return value of type: class解決辦法

開發過程中遇到這個報錯:No converter found for return value of type: class  請求返回的資料無法轉換,需要新增配置: <dependency>     <groupId>com.fasterxml

sql server express版本不能啟動代理服務的解決辦法

真是“”活到老,學到老“”,最近又在用MS SQL做資料庫開發了,因為我用的是筆記本僅能安裝EXPRESS版本的MS SQL 2008 R2。有意思的是這個版本的代理服務根本就不能啟動,想了各種辦法。。。找了各種辦法。。。 結論:重新安裝或是升級的新的版本如:開發版或是企

Winform MDI窗體切換不閃爍的解決辦法測試通過

view ref ipa edr 定義 true post pen 情況 MDI窗體不閃爍方法測試通過: //.net 4.0用OptimizedDoubleBufferthis.SetStyle(ControlStyles.OptimizedDoubleBuffer |

Laravel ajax請求419錯誤及解決辦法CSRF驗證 阿星小棧

detail meta csdn div content pre bsp setup rip ajax請求報419 unknown status 解決辦法1:將這個接口放到api路由上,這樣可以跳過CSRF的檢查 解決辦法2: 1.在頁面上添加 <meta nam

關於訓練深度學習模型deepNN時,訓練精度維持固定值,模型不收斂的解決辦法tensorflow實現

一、背景 最近一直在做人臉表情的識別,用到的程式是之間的一篇文章中的程式:深度學習(一)——deepNN模型實現攝像頭實時識別人臉表情(C++和python3.6混合程式設計)。這裡我只進行了簡單的程式修改。 由於該程式是利用fer2013資料集做的,效果不是很好,人臉表情的識別精度僅有70

Xcode 10碰到的坑及解決辦法更新中

為了響應程式碼開發的號召,我在第一時間更新了xcode10,下完發現之前的專案編譯出錯,新建的專案也有一系列問題,碰壁了半天又去搜資料,暫時解決了出現的問題,記錄如下: 問題一:以前的程式碼編譯出錯 第一步: 原因:libc++.tbd 庫取代了libstdc++.6.0.9.t

javax.net.ssl.SSLException 解決辦法踩坑

剛剛安裝了ubuntu18.04 ,執行/gradlew assembleDebug的時候報異常javax.net.ssl.SSLException     在網上找找別人的踩坑指南,找了很久很久,終於在stackoverflow上的一行小字找到了解決方法

Foxmail登陸失敗-NO LOGIN Login error password error問題出現原因及解決辦法授權碼

問題描述: 因為今天在一個專案中需要用到郵箱的客戶端授權碼,所以我在網易郵箱網頁版中設定了授權碼,但是在後來在Foxmail客戶端收取郵件時出現了問題: 我確定自己沒有改過密碼,所以又進行了多次嘗試   好吧,相信提示,我去改密碼(但我覺得密碼沒錯啊???)

linux中安裝Gitlab伺服器後登入報錯502解決辦法圖文集合

     前幾天安裝好了本地的Gitlab伺服器,都沒什麼問題,可以直接開啟。但是今天一通過 http//192.168.1.164:9090 來訪問直接報了502錯誤。如下圖: 502錯誤就是閘道器錯誤: 伺服器正在作為一個閘道器或代

關於Python安裝後升級pip失敗的解決辦法實測有效

問題還原:    (1)安裝requests時出現pip需要升級。。。 (2)先檢查pip的版本            win+R,鍵入cmd回車,鍵入pip -V                         當前版本為9.0.3 (3)升級pip

QT、VS常見bug及解決辦法十一—— fatal error LNK1201:寫入程式資料庫“***.pdb”時出錯;請檢查是否是磁碟空間不足、路徑無效或許可權不夠

 問題:         fatal error LNK1201:寫入程式資料庫“***.pdb”時出錯;請檢查是否是磁碟空間不足、路徑無效或許可權不夠  最近用opencv2.4.10、vs2010做開發經常遇到這個問題,經百度發現大部分是vs自己的問題 解決辦法1:

Ubuntu裝系統後重啟卡死解決辦法超詳細

筆者為了裝這個Ubuntu可走了不少彎路,想必當你看到我這篇部落格時你一定遇到了如下諸多問題的諸多個(筆者全部遇到了): 1.Ubuntu裝都裝不了,第一步載入lougou下面有幾個點,紅了幾個就停下了,從此一直如此,迫不得已強制關機! 2.驚險度過問題1,但是才到第一步

java 編譯異常及其解決辦法持續更新

unable event stc .config configure rect spring conf version java 編譯異常及其解決辦法(持續更新) 1.解決辦法:將jar版本降低適配 低版本的jdk或tomcat 1 嚴重: ContainerBase

python升級導致yum命令無法使用的解決辦法修改版

1、報錯資訊如下:[[email protected] bin]# yum [[email protected] local]# yum -y install prce There was a problem importing one of the P

解決使用路由器上傳網站出現FTP上傳緩慢至0.0kb/s的解決辦法實測有效

      最近突然發現自己電腦的FTP上傳變得非常奇怪,使用FTP時4kb的檔案都無法正常上傳到伺服器上,flashfxp總是顯示從最高速度傳輸慢慢的將為0.0kb/s,然後很久才有反應開始緩慢的上傳下一個檔案。同時其他涉及到向網路傳送資料的操作如上傳檔案,提交表單資料等都變得異常緩慢。       

LodaRunner 指令碼執行時連線錯誤解決辦法Error -27098

指令碼錄製好後回放。提示錯誤資訊如下: Error -27796: Failed to connect to server "127.0.0.1:1080": [10061] Connection refused  [MsgId: MERR-27796] Warning

【Linux】【Opencv】【Python】安裝opencv以及無法使用cv2.imshow()解決辦法Ubuntu14.04

------【2017.07.14 更新】------------------------------------------------------- 安裝opencv3每次cmake都要下載3rd

git 無法拉取專案,本地ping不通github的解決辦法詳解

一、遇到的問題       本地在從github上拉取專案的時候,一直卡著,然後過個2分鐘就報錯,連線超時。問題是我前幾天還能git pull專案呢,百思不得其解。後來本地瀏覽器訪問github,得,連全世界最大的基佬交友網站都訪問不了。本地ping一下IP吧,

HTML5 虛擬鍵盤出現擋住輸入框的解決辦法安卓

//防止鍵盤把當前輸入框給擋住 $('input[type="text"]).on('click', function () { var target = this; setTimeout(function(){ target.scrollIntoViewIfNeeded();