博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
OC 调用JS 代码 处理HTML5 实战
阅读量:4975 次
发布时间:2019-06-12

本文共 2913 字,大约阅读时间需要 9 分钟。

直接贴代码了;已经懒到极致了!

 

需求:     解决服务器传过来的js代码,并正确的按想要的排版方式显示在页面上(即适配移动端各个屏幕)

解决方案:  加载前提前拦截修改适配样式 (当然也可以前端做适配各个平台, 不过移动端做了处理就不用理会前端是否适配的问题)

 

处理的问题有:  适配文字大小; 适配图片大小; 适配视频大小;

 

- (void)parseHTMLWithHtml:(NSString *)htmls {

    self.content.alpha = 0;

    self.webView = [[UIWebView alloc] initWithFrame:CGRectMake(15, CGRectGetMaxY(_imagesView.frame) , kWIDTH_SCREEN -30, kHEIGHT_SCREEN/2 )];

    [self.scroll addSubview:self.webView];

    self.webView.scrollView.scrollEnabled = NO;

    self.webView.delegate = self;

    self.webView.backgroundColor = [UIColor whiteColor];

    self.scroll.contentSize = CGSizeMake(kWIDTH_SCREEN -30 , CGRectGetMaxY(self.webView.frame)+64+20);

    [SVProgressHUD showWithStatus:@"努力加载..."];

    htmls = [htmls stringByReplacingOccurrencesOfString:@"<br/>" withString:@""];

    [self.webView loadHTMLString:htmls baseURL:nil];

    [self.webView addObserver:self forKeyPath:@"loading" options:NSKeyValueObservingOptionNew context:nil];

}

 

- (void)webViewDidFinishLoad:(UIWebView *)webView {

    [webView stringByEvaluatingJavaScriptFromString:@"document.getElementsByTagName('body')[0].style.webkitTextSizeAdjust= '75%'"];

    NSString *js=@"var script = document.createElement('script');"

    "script.type = 'text/javascript';"

    "script.text = \"function ResizeImages() { "

    "var myimg,oldwidth;"

    "var maxwidth = %f;"

    "for(i=0;i <document.images.length;i++){"

    "myimg = document.images[i];"

    "if(myimg.width > maxwidth){"

    "oldwidth = myimg.width;"

    "myimg.width = %f;"

    "}"

    "}"

    "}\";"

    "document.getElementsByTagName('head')[0].appendChild(script);";

    js=[NSString stringWithFormat:js,[UIScreen mainScreen].bounds.size.width-30 ,[UIScreen mainScreen].bounds.size.width-45];

    [webView stringByEvaluatingJavaScriptFromString:js];

    [webView stringByEvaluatingJavaScriptFromString:@"ResizeImages();"];

    NSString *js2 =@"var script = document.createElement('script');"

    "script.type = 'text/javascript';"

    "script.text = \"function ResizeVideo() { "

    "var number = (document.getElementsByTagName('iframe')[0].height / document.getElementsByTagName('iframe')[0].width);"

    "document.getElementsByTagName('iframe')[0].width= %f;"

    "document.getElementsByTagName('iframe')[0].height= document.getElementsByTagName('iframe')[0].width * number ;"

    "}\";"

    "document.getElementsByTagName('head')[0].appendChild(script);";

    js2 = [NSString stringWithFormat:js2,[UIScreen mainScreen].bounds.size.width-30 ];

    [webView stringByEvaluatingJavaScriptFromString:js2];

    [webView stringByEvaluatingJavaScriptFromString:@"ResizeVideo();"];

    CGFloat webViewHeight=[webView.scrollView contentSize].height;

    CGRect newFrame = webView.frame;

    newFrame.size.height = webViewHeight;

    webView.frame = newFrame;

    self.scroll.contentSize = CGSizeMake(kWIDTH_SCREEN - 30, CGRectGetMaxY(webView.frame) - kHEIGHT_SCREEN/3);

    dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.8 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{

           [SVProgressHUD dismiss];

    });

 

}

转载于:https://www.cnblogs.com/Jenaral/p/6117912.html

你可能感兴趣的文章
强大的css3
查看>>
c#中的组件拖拽和MouseMove事件
查看>>
C# 小叙 Encoding (二)
查看>>
python创建对象数组避免浅拷贝
查看>>
CSS自学笔记(14):CSS3动画效果
查看>>
项目应用1
查看>>
Ubuntu下配置jdk和tomcat
查看>>
大型网站的演变升级
查看>>
图片延迟加载的实现
查看>>
php适配器模式(adapter pattern)
查看>>
C# 委托链(多播委托)
查看>>
解密个推持续集成
查看>>
基本SCTP套接字编程常用函数
查看>>
C 编译程序步骤
查看>>
页面抓取匹配时,万恶的\r,\n,\t 要先替换掉为空,出现匹配有问题,都是这个引起的...
查看>>
利用Node.js调用Elasticsearch
查看>>
构造函数
查看>>
LeetCode N-Queens
查看>>
jstat 命令
查看>>
leetcode[155]Min Stack
查看>>