这段时间写的项目中,有涉及到根据后端上传的表单内容,然后在移动端将内容排版重新展示的功能点,所以小小的写一下解决办法。

首先如果直接进行内容展示,或者进行sizeToFit的操作,那么可能会造成图片超过屏幕大小,字体变得很小的结果,所以这里用到了UIWebView的delegate方法和添加了html的标签语言,使用了javascript操作方法。具体可以研究代码,如下:

//web
-(UIWebView *)detailWebView
{
    if (_detailWebView == nil) {
        _detailWebView = [UIWebView new];
        _detailWebView.delegate = self;
        _detailWebView.scrollView.bounces = NO;
        _detailWebView.scrollView.showsHorizontalScrollIndicator = NO;
        _detailWebView.scrollView.scrollEnabled = NO;
        _detailWebView.dataDetectorTypes = UIDataDetectorTypeAll;
        [_detailWebView sizeToFit];
    }
    return _detailWebView;
}

 NSString *htmlcontent = [NSString stringWithFormat:@"<head><style>img{max-width:%fpx !important;}</style></head><div id=\"webview_content_wrapper\">%@</div>",f_Device_w-30,detailDic[@"content"]];

    [_detailWebView loadHTMLString:htmlcontent baseURL:nil];

#pragma mark ----- webView 的 delegate
- (void)webViewDidFinishLoad:(UIWebView *)webView
{
    //获取页面高度(像素)
    NSString * clientheight_str = [webView stringByEvaluatingJavaScriptFromString: @"document.body.offsetHeight"];
    float clientheight = [clientheight_str floatValue];
    //设置到WebView上
    webView.frame = CGRectMake(15, _whereNewsLabel.bottom+10, f_Device_w-30, clientheight);

    //下面这样写就是获取到比较准确的内容高度,不需要再进行其他计算了
    //获取内容实际高度(像素)
    NSString * height_str= [webView stringByEvaluatingJavaScriptFromString: @"document.getElementById('webview_content_wrapper').offsetHeight + parseInt(window.getComputedStyle(document.getElementsByTagName('body')[0]).getPropertyValue('margin-top'))  + parseInt(window.getComputedStyle(document.getElementsByTagName('body')[0]).getPropertyValue('margin-bottom'))"];
    float height = [height_str floatValue];

    //再次设置WebView高度(点)
    webView.frame = CGRectMake(15, _whereNewsLabel.bottom+10, f_Device_w-30, height);

    if ([self.delegate respondsToSelector:@selector(backWebViewWithHeight:)]) {
        [self.delegate backWebViewWithHeight:webView.bottom+5];
    }
}

有写代码是我项目中使用的,没有必要用,大家可以根据自己的需要修改,必要的代码上面都有,有问题可以留言,不喜勿喷,谢谢!









最新文章

  1. 《DSP using MATLAB》示例Example5.18
  2. thinkphp3.2.3关于模板使用之一二
  3. pip安装
  4. The project: project which is referenced by the classpath, does not exist.
  5. 【BZOJ】3771: Triple
  6. MVC中使用RazorPDF创建PDF
  7. [BS-11] 关于RGB/ARGB颜色相关知识
  8. SQL 数据类型,增删改查语句
  9. HTML的定位属性
  10. Loadrunner中与事务相关的概念及函数
  11. Sql 求比率 类型 影响 结果
  12. 顶层const和底层const
  13. JS学习随手笔记
  14. POJ(1195)(单点修改,区间查询)(二维)
  15. 使用邮件激活授权/ LightningChart license
  16. align-item 和 align-content的区别
  17. linux内核期中总结
  18. 知识点:java 注解 @SuppressWarnings
  19. C/C++常用预处理指令
  20. 取消Fetch API请求

热门文章

  1. 关于js中对事件绑定与普通事件的理解
  2. Jquery15 插件
  3. SublimeText2 编辑器使用小结
  4. Java中private、protected、public和default的区别-001
  5. was控制台英文改成中文
  6. hadoop 3.1.1 安装
  7. 搭建springmvc
  8. Spring MVC 处理中文乱码
  9. 第五篇:Spark SQL Catalyst源码分析之Optimizer
  10. 2018 ICPC北京 H ac自动机