Swift - 网页控件(UIWebView)加载本地数据,文件
使用UIWebView加载本地数据或资源有如下三种方式:
hangge_549.zip
2016-09-23更新:代码现已升级至Swfit3版本
1,使用 loadHTMLString 方法加载HTML内容
2,使用 loadRequest 方法加载本地资源(也可用于加载服务器资源)
3,先将内容保存成 Data 数据,再使用 load 方法加载
使用样例
通过 UISegmentedControl 分别控制网页控件“显示HTML”“显示PDF”“loadData显示PDF”


代码如下:
import UIKit class ViewController: UIViewController { @IBOutlet var webview:UIWebView! @IBOutlet var loadtype:UISegmentedControl! override func viewDidLoad() { super.viewDidLoad() //默认选中分段控件的第一项 loadtype.selectedSegmentIndex = 0 typeChanged(loadtype) } @IBAction func typeChanged(_ sender:UISegmentedControl) { let index = sender.selectedSegmentIndex print(index) switch index { case 0: //在 UIWebView 中显示 HTML 内容 let html = "<h1>欢迎来到:<a href='http://hangge.com'>航歌</a></h1>"; webview.loadHTMLString(html,baseURL:nil) case 1: //在 UIWebView 中显示 PDF let path = Bundle.main.path(forResource: "test1", ofType:"pdf") let urlStr = URL(fileURLWithPath: path!) print(urlStr) webview.loadRequest(URLRequest(url:urlStr)) case 2: //在 UIWebView 中显示 PDF, 但是是通过 loadData 方式加载 let path = Bundle.main.path(forResource: "test1", ofType:"pdf") let urlStr = URL(fileURLWithPath: path!) let data = try! Data(contentsOf: urlStr) webview.load(data, mimeType: "application/pdf", textEncodingName: "utf-8", baseURL: NSURL() as URL) default: print("是不是出错了?") } } }源码下载:

2016-09-23更新:代码现已升级至Swfit3版本
站长,有个问题:我用let documentsPath = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]取沙盒路径下面的文档,但是我的文档是中文名的(比如:模板.pdf),然后获取到这个文件:let filePath = "\(documentsPath)/\("模板.pdf")",但是在转换成URL的时候let myUrl = URL(fileURLWithPath: filePath),得到的这个myUrl最后的文件名是乱码的,请问怎么解决啊?PS:最后用webView加载
航哥你好,请问一下,我想要要修改HTML里面的style属性,该怎么做呢?
航哥,webview.loadRequest超时设置是如何设置的啊?
webview加载完成有没有监听
航哥,case 0 和case 1 没有内容显示是什么情况,case 2 的pdf可以显示