下面是简单的例子:
加载动态URL地址
#pragma mark - 加载视图
- (void)viewDidLoad {
[super viewDidLoad];
self.webView = [[UIWebView alloc] initWithFrame:self.view.frame];
NSString *str = @"http://www.baidu.com";
NSURL *url = [NSURL URLWithString:str];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[self.webView loadRequest:request];
[self.view addSubview:self.webView];
}
出现问题:
...TTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file.
百度搜答案:
解决方案:
和
http://www.jianshu.com/p/257a28846956
下面的转载自上面的链接地址内容:
两种解决方案:
方式一: 使用文本编辑Info.plist
, 在当中添加:
<!--回到过去不安全的HTTP网络请求,能任意进行HTTP请求 (不建议这样做, 原因见下文)-->
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
方式二: 在Info.plist中添加:
以上两种方式所实现的效果是一致的, 但是并不严谨, 建议有选择的允许HTTP请求(这个操作方法与上文"方式一"相同):
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>域名.com</key>
<dict>
<!--允许子域名:subdomains-->
<key>NSIncludesSubdomains</key>
<true/>
<!--允许App进行不安全的HTTP请求-->
<key>NSTemporaryExceptionAllowsInsecureHTTPLoads</key>
<true/>
<!--在这里声明所支持的 TLS 最低版本-->
<key>NSTemporaryExceptionMinimumTLSVersion</key>
<string>TLSv1.1</string>
</dict>
</dict>
</dict>
当然, 以上方法都是建立在所访问的请求是HTTP类型的基础上, 一劳永逸的方法就是让服务端升级使用
TLS 1.2 SSL
加密请求的
HTTPS
协议.
服务器已支持TLS 1.2 SSL ,但iOS9上还是不行,还要进行链接里的适配操作。”那是因为:ATS只信任知名CA颁发的证书,小公司所使用的 self signed certificate,还是会被ATS拦截。对此,建议使用链接中给出的NSExceptionDomains,并将你们公司的域名挂在下面。
加载静态HTML页面
self.webView = [[UIWebView alloc] initWithFrame:self.view.frame];
NSString *str = @"Hellow <b> WebView</b>,<a href=http://www.baidu.com>More...</a>";
[self.webView loadHTMLString:str baseURL:nil];
[self.view addSubview:self.webView];
显示网页之前,显示一个旋转动画
#pragma mark - 加载视图
- (void)viewDidLoad {
[super viewDidLoad];
self.webView = [[UIWebView alloc] initWithFrame:self.view.frame];
self.activityIndicatorView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];
self.activityIndicatorView.frame = CGRectMake(20, 20, 100, 100);
self.activityIndicatorView.center = self.webView.center;
//UIWebViewDelegate
self.webView.delegate = self;
//实例化NSURLRequest
NSString *str = @"http://www.baidu.com";
NSURL *url = [NSURL URLWithString:str];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
//加载页面
[self.webView loadRequest:request];
//添加UIActivityIndicatorView到WebView中
[self.webView addSubview:self.activityIndicatorView];
[self.view addSubview:self.webView];
}
#pragma mark - 开始加载
- (void)webViewDidStartLoad:(UIWebView *)webView{
[self.activityIndicatorView startAnimating];
self.activityIndicatorView.hidden = NO;
}
#pragma mark - 结束加载
- (void)webViewDidFinishLoad:(UIWebView *)webView{
[self.activityIndicatorView stopAnimating];
self.activityIndicatorView.hidden = YES;
}
加载、刷新、后退、前进
#pragma mark - go
- (IBAction)go:(id)sender {
NSString *urlString = self.urlStr.text;
NSURL *url = [NSURL URLWithString:urlString];
NSURLRequest *request = [NSURLRequest requestWithURL:url];
[self.webview loadRequest:request];
}
#pragma mark - 前进
- (IBAction)forward:(id)sender {
[self.webview goForward];
}
#pragma mark - 后退
- (IBAction)back:(id)sender {
[self.webview goBack];
}
#pragma mark - 刷新
- (IBAction)refresh:(id)sender {
[self.webview reload];
}
和JavaScript通讯
#pragma mark - 加载视图
- (void)viewDidLoad {
[super viewDidLoad];
NSMutableString *muStrings = [NSMutableString stringWithCapacity:20];
[muStrings appendString:@"<html>"];
[muStrings appendString:@"<head>"];
[muStrings appendString:@"<script>"];
[muStrings appendString:@"function showAlert() {alert('Hello');}"];
[muStrings appendString:@"</script>"];
[muStrings appendString:@"</head>"];
[muStrings appendString:@"<body>"];
[muStrings appendString:@"Test JS"];
[muStrings appendString:@"</body>"];
[muStrings appendString:@"</html>"];
[self.webview loadHTMLString:muStrings baseURL:nil];
}
#pragma mark - 调用JS方法
- (IBAction)testJS:(id)sender {
[self.webview stringByEvaluatingJavaScriptFromString:@"showAlert()"];
}