美文网首页iOS技术点
iOS---UIWebView加载Html,根据html中的内容

iOS---UIWebView加载Html,根据html中的内容

作者: 鑫飞 | 来源:发表于2017-04-25 15:11 被阅读293次

一:第一种方法直接加载

1. 初始话一个UIWebView:
self.webView = [[[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 320, 0)] autorelease];
(这里需要注意的一点是,frame的高度一定要设置为0,方便后面动态设置高度);
2. 设置UIWebView的delegate:

self.webView=self(这个就不多说了)

3. 实现UIWebView 的代理方法webViewDidFinishLoad:
- (void)webViewDidFinishLoad:(UIWebView *)webView{
    CGRect rect=  webView.frame;
    rect.size.height=webView.scrollView.contentSize.height;(此方法是将webView.scrollView的contentSize的高度赋给webView的高度,所以之前在初始化webView的时候将webView的默认高度设置为0意义就在于此,这样contentSize.height就是内容的高度了)
    NSLog(@"-----%f",webView.scrollView.contentSize.height);
    webView.frame=rect;
 }
3. 缺点

里面的图片不会自适应

二:第二种方法:转义之后加载,图片能自适应屏幕

NSInteger width = self.webView.frame.size.width * 0.95;
方法一 : 
NSString *string = [NSString stringWithFormat:@"<head><style>img{max-width:%ldpx !important;}ul {margin:0; padding:0; text-align:left;}</style><head>", (long)width];
方法二 :
NSString *string = [NSString stringWithFormat:@"<head><style>body, div, span, a, dl, dt, dd, ul, ol, li, h1, h2, h3, h4, h5, h6, p, th, td, pre, form, fieldset, legend, input, button, textarea, select {margin:0;padding:5;}img{max-width:%ldpx !important;}li {list-style:none;}</style><head>", (long)width];
NSString *newHtml = [self HTML:model.body];
NSString *str = [NSString stringWithFormat:@"%@%@", string, newHtml];
[self.webView loadHTMLString:str baseURL:nil];
注 : li {list-style:none;} //去掉li的小黑点
        img{max-width:%ldpx !important;} // 图片宽度自定义
        ul {margin:0; padding:0; text-align:left;} // 左对齐
       select {margin:0;padding:5;}//文字距离边缘的数
#pragma mark -- 转义html中的标签
- (NSString *)HTML:(NSString *)html{
    NSScanner *theScaner = [NSScanner scannerWithString:html];
    NSDictionary *dict = @{@"&":@"&", @"<":@"<", @">":@">", @" ":@"", @""":@"\"", @"width":@"wid"};
    while ([theScaner isAtEnd] == NO) {
        for (int i = 0; i <[dict allKeys].count; i ++) {
            [theScaner scanUpToString:[dict allKeys][i] intoString:NULL];
            html = [html stringByReplacingOccurrencesOfString:[dict allKeys][i] withString:[dict allValues][i]];
        }
    }
    return html;
}

相关文章

  • iOS---UIWebView加载Html,根据html中的内容

    一:第一种方法直接加载 1. 初始话一个UIWebView: 2. 设置UIWebView的delegate:...

  • Swift开发---UIWebView&UIWKWebView,

    文件层级关系: 1、从文件中读取HTML内容 2、加载本地HTML文件 3、直接加载html内容

  • ios - webView的使用

    一. 创建: 二. 加载方式: 常用的网页加载方式 加载html格式的内容(html文件中加载和html格式字...

  • UIWebView加载本地html

    UIWebView除了能加载网页地址外还可以加载本地html,加载的方式主要有两种 读取本地html内容,加载内容...

  • loading data dynamically and as

    .py .html .js 异步加载数据,动态追加元素到页面,动态生成html标签中的内容。好处:It just ...

  • 图片自适应&WebView&文章自动换行

    在HTML代码中设置内容样式,一般使用css或者js,那么根据加载优先级以及加载效果,可以自行选择。 js在页面加...

  • JQuery

    找到HTML元素 改变HTML中的内容 根据用户操作做出反馈,比如按下按钮 动画效果 ajax 找到HTML元素 ...

  • Dom 加载顺序 和延时加载

    1 浏览器解释html文件中的所有内容是从上到下加载的!浏览器解释html文件中的所有内容是从上到下加载的!浏览器...

  • WebView自动缓存-清除缓存

    iOS的Webview加载HTML时会自动缓存JS、CSS等文件,当下次加载HTML时会根据请求的缓存策略是否使用...

  • JavaScript基础

    一、页面中引入js代码 在HTML主体代码最底端插入 标签即可。不在上面加入,是因为网页根据HTML自上而下加载,...

网友评论

    本文标题:iOS---UIWebView加载Html,根据html中的内容

    本文链接:https://www.haomeiwen.com/subject/apevzttx.html