Swift - 网页控件(UIWebView)加载网页,本地数据,文件
来源:互联网 发布:德布劳内技术特点知乎 编辑:程序博客网 时间:2024/06/15 19:35
使用UIWebView加载本地数据或资源有如下三种方式:1,使用 loadHTMLString 方法加载HTML内容2,使用 loadRequest 方法加载本地资源(也可用于加载服务器资源)3,先将内容保存成 NSData 数据,再使用 loadData 方法加载
代码如下:12345678910111213141516171819202122232425262728293031323334353637383940414243import
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 =
NSBundle
.mainBundle().pathForResource(
"test1"
, ofType:
"pdf"
)
let
urlStr =
NSURL
.fileURLWithPath(path!);
print
(urlStr)
webview.loadRequest(
NSURLRequest
(
URL
:urlStr));
case
2:
//在 UIWebView 中显示 PDF, 但是是通过 loadData 方式加载
let
path =
NSBundle
.mainBundle().pathForResource(
"test1"
, ofType:
"pdf"
)
let
urlStr =
NSURL
.fileURLWithPath(path!);
let
data =
NSData
(contentsOfURL:urlStr);
webview.loadData(data!,
MIMEType
:
"application/pdf"
,
textEncodingName:
"utf-8"
,baseURL:
NSURL
());
default
:
print
(
"是不是出错了?"
)
}
}
}
- class ViewController: UIViewController,UIWebViewDelegate { //遵守代理协议
-
- override func viewDidLoad() {
- super.viewDidLoad()
- //调用
- addwenview()
- }
-
- //加载网页到view的方法
- func addwenview() {
- let webview = UIWebView(frame:UIScreen.mainScreen().bounds )
- let Requst = NSURLRequest(URL: NSURL(string: "https://www.baidu.com")!)
- view.addSubview(webview)
- webview.loadRequest(Requst)
- webview.delegate = self //设置代理为本控制器
- }
-
- func webViewDidStartLoad(webView: UIWebView) {
- //连接网络时,显示系统自带的联网小菊花
- print("开始加载调用")
- UIApplication.sharedApplication().networkActivityIndicatorVisible = true
-
- }
-
- func webViewDidFinishLoad(webView: UIWebView) {
- print("加载完成调用")
- //加载完成关闭联网小菊花
- UIApplication.sharedApplication().networkActivityIndicatorVisible = false
- }
-
- func webView(webView: UIWebView, didFailLoadWithError error: NSError?) {
- print("加载失败调用")
- //加载失败了,我们可以创建一个按钮来重新加载,来重新调用 addwenview()方法
- //或者提醒用户检查联网状态
- //或者直接跳转到系统网络设置
- //或者坐一些其它处理
-
- }
-
- }
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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 =
NSBundle
.mainBundle().pathForResource(
"test1"
, ofType:
"pdf"
)
let
urlStr =
NSURL
.fileURLWithPath(path!);
print
(urlStr)
webview.loadRequest(
NSURLRequest
(
URL
:urlStr));
case
2:
//在 UIWebView 中显示 PDF, 但是是通过 loadData 方式加载
let
path =
NSBundle
.mainBundle().pathForResource(
"test1"
, ofType:
"pdf"
)
let
urlStr =
NSURL
.fileURLWithPath(path!);
let
data =
NSData
(contentsOfURL:urlStr);
webview.loadData(data!,
MIMEType
:
"application/pdf"
,
textEncodingName:
"utf-8"
,baseURL:
NSURL
());
default
:
print
(
"是不是出错了?"
)
}
}
}
如果出现类似错误: NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9802)
原因:在 iOS9中,在网络通话中ATS强制采用最佳实践,包括使用HTTPS.
解决办法: 右击 Info.plist 文件 -> Open As > Source Code
然后在最后的</dict>
之前添加如下代码即可:
- <key>NSAppTransportSecurity</key>
- <dict>
- <key>NSAllowsArbitraryLoads</key>
- <true/>
- </dict>
0 0
- Swift - 网页控件(UIWebView)加载网页,本地数据,文件
- Swift - 网页控件(UIWebView)加载本地数据,文件
- swift 3.1. uiwebview 加载网页
- UIWebView之加载本地网页
- UIWebView加载本地网页乱码
- UIWebView获得网页内容(HTML源码)、加载本地HTML文件
- UIWebView 加载网页数据(网页,网页片段,本地文件)
- UIWebView --- 内置的浏览器控件 加载网页
- UIWebView显示本地网页
- ios UIWebView 加载网页、文件、 html
- ios UIWebView 加载网页、文件、 html
- ios UIWebView 加载网页、文件、 html
- ios UIWebView 加载网页、文件、 html
- ios UIWebView 加载网页、文件、 html
- ios UIWebView 加载网页、文件、 html
- iOS UIWebView 加载网页、文件、 html
- ios UIWebView 加载网页、文件、 html
- ios UIWebView 加载网页、文件、 html
- dokcer 运行和进入容器
- STL Vector remove()和erase()的使用
- xcode证书错误
- powerdesigner使用过程中的注意点
- php 数组排序以及按照某个字段排序,主要mark usort的
- Swift - 网页控件(UIWebView)加载网页,本地数据,文件
- busybox根文件系统mdev的详解
- 如何使用 Navicat for MySQL
- MAC OX 10.11.5安装eclipse新建工程报错
- mySQL控制台字体颜色调整
- 多个按钮用同一个监听器监听
- 数据库日志过大
- mysql 动态行转列
- 图解Javascript原型链