首页 > 代码库 > js调用swift相册DEMO(网易新闻)
js调用swift相册DEMO(网易新闻)
关键代码
1 window.location.href = http://www.mamicode.com/‘tg:///openCamera‘
css
1 body{ 2 } 3 4 img{ 5 width:100%; 6 } 7 8 #mainTitle{ 9 text-align:center; 10 font-size:20px; 11 margin-top:20px; 12 margin-bottom:8px; 13 } 14 15 #subTitle{ 16 text-align:left; 17 font-size:12px; 18 color:gray; 19 } 20 21 .time{ 22 margin-right:10px; 23 margin-bottom:8px; 24 } 25 26 .all-img{ 27 text-align:center; 28 font-size:14px; 29 color:gray; 30 margin:8px 0; 31 }
js
1 window.onload = function(){ 2 var allImg = document.getElementsByTagName("img"); 3 for(var i=0; i<allImg.length; i++){ 4 var img = allImg[i]; 5 img.id = i; 6 img.onclick = function(){ 7 window.location.href = http://www.mamicode.com/‘tg:///openCamera‘"color: #008080"> 8 } 9 } 10 var img = document.createElement(‘img‘); 11 img.style.cssText = "width:50%"; 12 img.src = http://www.mamicode.com/‘https://avatars0.githubusercontent.com/u/22094559?v=3&s=460‘; 13 document.body.appendChild(img); 14 }
swift
1 // 2 // ViewController.swift 3 // JSInSwiftDemo 4 // 5 // Created by targetcloud on 2016/12/13. 6 // Copyright ? 2016年 targetcloud. All rights reserved. 7 // 8 9 import UIKit 10 11 class ViewController: UIViewController { 12 13 @IBOutlet weak var webview: UIWebView! 14 15 override func viewDidLoad() { 16 super.viewDidLoad() 17 let url = URL(string: "http://c.m.163.com/nc/article/C85G09IV000189FH/full.html") 18 let request = URLRequest(url: url!) 19 let dataTask = URLSession.shared.dataTask(with: request, completionHandler: { (data, response, error) in 20 if(error == nil){ 21 let jsonData = http://www.mamicode.com/try? JSONSerialization.jsonObject(with: data!, options: JSONSerialization.ReadingOptions.allowFragments) as! [String:Any] 22 self.dealNewsDetail(jsonData!) 23 } 24 }) 25 dataTask.resume() 26 } 27 28 func dealNewsDetail(_ jsonData: [String:Any]) { 29 guard let allData = http://www.mamicode.com/jsonData["C85G09IV000189FH"] as? [String:Any] else {return} 30 var bodyHtml = allData["body"] as! String 31 let title = allData["title"] as! String 32 let ptime = allData["ptime"] as! String 33 let source = allData["source"] as! String 34 let imgArr = allData["img"] as! [[String: Any]] 35 for i in 0..<imgArr.count{ 36 let imgItem = imgArr[i] 37 let ref = imgItem["ref"] as! String 38 let imgTitle = imgItem["alt"] as! String 39 let src = http://www.mamicode.com/imgItem["src"] as! String 40 let imgHtml = "<div class=\"all-img\"><img src=http://www.mamicode.com/"\(src)\"><div>\(imgTitle)</div></div>" 41 bodyHtml = bodyHtml.replacingOccurrences(of: ref, with: imgHtml) 42 } 43 let titleHtml = "<div id=\"mainTitle\">\(title)</div>" 44 let subTitleHtml = "<div id=\"subTitle\"><span>\(source)</span><span class=\"time\">\(ptime)</span></div>" 45 46 let css = Bundle.main.url(forResource: "democss", withExtension: "css") 47 let cssHtml = "<link href=http://www.mamicode.com/"\(css!)\" rel=\"stylesheet\">" 48 49 let js = Bundle.main.url(forResource: "demojs", withExtension: "js") 50 let jsHtml = "<script src=http://www.mamicode.com/"\(js!)\"></script>" 51 52 let html = "<html><head>\(cssHtml)</head><body>\(titleHtml)\(subTitleHtml)\(bodyHtml)\(jsHtml)</body></html>" 53 webview.loadHTMLString(html, baseURL: nil) 54 } 55 56 func webView(_ webView: UIWebView, shouldStartLoadWith request: URLRequest, navigationType: UIWebViewNavigationType) -> Bool { 57 let requestString: NSString = (request.url?.absoluteString)! as NSString 58 let range = requestString.range(of: "tg:///") 59 let location = range.location 60 if(location != NSNotFound){ 61 let method = requestString.substring(from: range.length) 62 let sel = NSSelectorFromString(method) 63 self.perform(sel) 64 } 65 return true 66 } 67 68 func openCamera() { 69 let photoVC = UIImagePickerController() 70 photoVC.sourceType = UIImagePickerControllerSourceType.photoLibrary 71 self.present(photoVC, animated: true, completion: nil) 72 } 73 }
注意工程的info.plist中加ATS及Privacy - Photo Library Usage Description
运行效果如下:
图1 是info.plist配置及运行效果,动态用 img数组替换新闻主体中的<!--IMG#0-->等占位
图2是从自己在HTML文件中插入自己图片的效果
图3是从charles中分析的结构
完整的DEMO 代码地址见github
https://github.com/targetcloud
js调用swift相册DEMO(网易新闻)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。