ios UIWebViewはHTML Strの図文をロードして、ピクチャーの幅の高さの設定について、webViewの内容の実際の高さのピットの問題...

8799 ワード

一.UIWebViewとWKWebViewの選択について
公開時間から見ると:
2008年7月11日、次世代iPhone 3 Gが発売された当日、iPhone OS 2.0(iOS 2.0)が発売され、UIWebViewが登場した.
WKWebViewは、2014年9月にIOS 8.0で発売された.新しく出たWKWebViewは、古いUIWebViewの最適化とアップグレードです.
WKWebViewはUIWebViewの主なメリットと比較して:
  • より多くのHTML 5をサポートする機能
  • ロード進捗属性が追加されました:estimatedProgress
  • メモリ消費量が小さく、Webページのロード速度も
  • 大幅に向上
  • 機能細分化、より具体的に
  • しかしIOS 8を考えると.0,UIWebViewはより強い互換性を有する.加えて、必要に応じてHTML Str+オリジナルコントロールをロードします.要求は高くありません.ここではUIWebViewを選択します.
    二.ふみだめ
    ピット1:htmlStrは正しく接合されていません
    NSString *strHTML = _textDic[@"content"];
        NSString *str = [NSString stringWithFormat:@" 
    " "
    " "
    " "
    " "" "" "window.onload = function(){
    " "var $img = document.getElementsByTagName('img');
    " "for(var p in $img){
    " " $img[p].style.width = '100%%';
    " "$img[p].style.height ='auto'
    " "}
    " "}" "%@" "" "",strHTML]; [self.webView loadHTMLString:str baseURL:nil];

    ヘッドをこのようにフルにするには、widthだけをスクリーン にすると、 のフィットに が し、UIWebViewを する の の さに が し、 に を す.
    の に を きます:“$img[p].style.width='100%%';”すなわち100%であり、 はスクリーン である.
    の さを します:“$img[p].style.height='auto'”すなわちauto、 に します.
    もちろん、バックグラウンドのアップロード の を すれば、width、heightを で して することもできます.
    ピット2:UIWebViewの の の さを するのは ではありません
    - (void)webViewDidFinishLoad:(UIWebView *)webView
    {
        webView.scrollView.scrollEnabled = NO;
        webView.scrollView.showsVerticalScrollIndicator = NO;
        webView.scrollView.showsHorizontalScrollIndicator = NO;
    
        //  1
    //        NSString *htmlHeight = [webView stringByEvaluatingJavaScriptFromString:@"document.body.scrollHeight"];
    //        NSString *htmlWidth = [webView stringByEvaluatingJavaScriptFromString:@"document.body.scrollWidth"];
    //        float i = [htmlWidth floatValue]/[htmlHeight floatValue];
    //        float height = ScreenWidth/I;
    
    //       2
        CGSize fittingSize = [webView sizeThatFits:CGSizeZero];
        CGFloat height = fittingSize.height;
        _webView.frame = CGRectMake(0, 0, ScreenWidth, height);
    }

    ネット にはUIWebViewを する がたくさんあります.ブロガーは7 を したことがあります. できる2つの をお めします.
    1:HTMLコンテンツのアスペクト を することにより,UIWebViewのコンテンツ さを する.
    1つ があります./を いていないと、 られた さに さな があり、UIWebViewの さを さに すると、 さくなってしまいます.リフレッシュアップロードを み わせると、 にもUIWebViewの に い が されます( い のように えますが、 による です)
    2: 、 きさを えず、 の さを し、 られた さは の さより きくなり、 Bugが れず、 に する.
    sizeToFitとsizeThatFitsを げると、 の くはこの2つを できないので、このように できます.
    コントロールsizeToFitの 、 すると、コントロールの の が わり、 は を めるために されます.
    、sizeThatFitsは、コントロールを する なSizeであり、コントロールは されません.このSizeはあなたが に うのか、それが する です.
    ピット3:アイテムを アップロードする がある 、ドロップダウンして しいHtmlStrをリフレッシュすると、 さがエラーになります.
    は、UIWebViewが にキャッシュし、 しいHtmlStrを ロードすることです.キャッシュのため、 した さになり、 になります.
    として、UIWebViewの ロード にキャッシュをクリアします.
       if (_webView) {
            _webView = nil;
            [self cleanCacheAndCookie];
        }
    /**     cookie*/
    - (void)cleanCacheAndCookie{
        //  cookies
        NSHTTPCookie *cookie;NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
        for (cookie in [storage cookies]){[storage deleteCookie:cookie];}
        //  UIWebView   
        [[NSURLCache sharedURLCache] removeAllCachedResponses];
        NSURLCache * cache = [NSURLCache sharedURLCache];
        [cache removeAllCachedResponses];
        [cache setDiskCapacity:0];
        [cache setMemoryCapacity:0];
    }

    , , 。
    Bug , , 。


    1.iOS webview
    2.iOS  3—UIWebView WKWebView    
    3.iOS  HTML          UIWebView   

    :https://www.cnblogs.com/zhouDongdong/p/11202979.html