zoukankan      html  css  js  c++  java
  • ios webview自适应实际内容高度4种方法

    ios webview自适应实际内容高度4种方法


     

    方法1:获取webview中scrovllview的contentsize进行设置

     
    1
    2
    3
    4
    5
    6
    -(void)webViewDidFinishLoad:(UIWebView *)webView{
        CGFloat webViewHeight=[webView.scrollView contentSize].height;
        CGRect newFrame = webView.frame;
        newFrame.size.height = webViewHeight;
        webView.frame = newFrame;
    }

    方法2:执行js语句 直接获取html文档的dom高度

     
    1
    2
    3
    4
    5
    6
    7
    -(void)webViewDidFinishLoad:(UIWebView *)webView{
        CGFloat webViewHeight= [[webView stringByEvaluatingJavaScriptFromString: @"document.body.offsetHeight"]floatValue];
    // CGFloat webViewHeight= [[webView stringByEvaluatingJavaScriptFromString: @"document.body.scrollHeight"]floatValue];
        CGRect newFrame = webView.frame;
        newFrame.size.height = webViewHeight;
        webView.frame = newFrame;
    }

    方法3.先将UIWebView的高度设为最小,然后再使用sizeThatFits就会返回刚好合适的大小

     
    1
    2
    3
    4
    5
    6
    -(void)webViewDidFinishLoad:(UIWebView *)webView{
        CGSize actualSize = [webView sizeThatFits:CGSizeZero];
        CGRect newFrame = webView.frame;
        newFrame.size.height = actualSize.height;
        webView.frame = newFrame;
    }

    方法4.遍历webview子视图 获取UIWebDocumentView高度即实际高度

     
     
     
     
     
    Objective-C
     
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    -(void)webViewDidFinishLoad:(UIWebView *)webView{
        CGFloat webViewHeight = 0.0f;
        if ([webView.subviews count] > 0)
        {
            UIView *scrollerView = webView.subviews[0];
            if ([scrollerView.subviews count] > 0)
            {
                UIView *webDocView = scrollerView.subviews.lastObject;
                if ([webDocView isKindOfClass:[NSClassFromString(@"UIWebDocumentView") class]])
                {
                    webViewHeight = webDocView.frame.size.height;//获取文档的高度
                    webView.frame= webDocView.frame; //更新UIWebView 的高度
                }
            }
        }
    }
    感谢您的访问! 若对您有帮助或有兴趣请关注博客:http://www.cnblogs.com/Rong-Shengcom/
  • 相关阅读:
    Windows server 2016 解决“无法完成域加入,原因是试图加入的域的SID与本计算机的SID相同。”
    Windows Server 2016 辅助域控制器搭建
    Windows Server 2016 主域控制器搭建
    Net Framework 4.7.2 覆盖 Net Framework 4.5 解决办法
    SQL SERVER 2012更改默认的端口号为1772
    Windows下彻底卸载删除SQL Serever2012
    在Windows Server2016中安装SQL Server2016
    SQL Server 创建索引
    C#控制台或应用程序中两个多个Main()方法的设置
    Icon cache rebuilding with Delphi(Delphi 清除Windows 图标缓存源代码)
  • 原文地址:https://www.cnblogs.com/Rong-Shengcom/p/5431475.html
Copyright © 2011-2022 走看看