UI基础视图----UIWebView总结

  UIWebView是UIKit框架中继承于UIView的一个常用的基础视图,和UILabel,UIImageView是兄弟类,用于展示一个网页。

  UIWebView是一个可以设置代理的类,在加载的不同状态有对应的协议方法,可以进行业务层面的逻辑处理。

  使用UIWebView可以做出一个简单的手机浏览器。

1:webView基本的属性和方法

  核心方法就是loadRequest:,用于加载一个请求,就可以实现展示一个网页。

  一个比较重要的属性是scalesPageToFit 缩放页面以适应屏幕。用于没有做移动端适配的网站来控制是否缩放

  注意:封装网络请求的时候网址的http://协议不能省略。

 1 - (void)viewDidLoad {
 2     [super viewDidLoad];
 3     //1:封装一个网络请求
 4     NSString * urlString = @"http://www.cnblogs.com/zhangys";//网址是一个字符串
 5     NSURL * url = [NSURL URLWithString:urlString];//把网址字符串转化为URL
 6     NSURLRequest * request = [NSURLRequest requestWithURL:url];//把URL封装成一个网络请求
 7     //2:实例化
 8     UIWebView * webView = [[UIWebView alloc] initWithFrame:self.view.frame];//像普通视图一样实例化
 9     //3:加载请求
10     [webView loadRequest:request];//webView的加载请求方法,把封装好的请求放进去
11     //4:设置代理为当前视图控制器
12     webView.delegate = self;
13     //5:缩放页面以适应屏幕
14     webView.scalesPageToFit = YES;
15     [self.view addSubview:webView];//UIView中层级关系很重要,不放在父视图上是显示不了的
16 }

 

2:代理方法

  当前视图控制器遵守UIWebViewDelegate协议,并且设置当前视图控制器为UIWebView的代理,就可以实现这个协议里面的方法,协议方法有四个,都是可选的(optional),可以根据需要来实现。这里实现三个,开始加载,结束加载和加载失败。

  注意:

  想要使用UIWebView的协议,必须有三部分:

  1:遵守协议(UIWebViewDelegate)

 

1 @interface ViewController () <UIWebViewDelegate>
2 
3 @end

 

 

 

  2:设置代理

 

1     //4:设置代理为当前视图控制器
2     webView.delegate = self;

 

 

 

  3:实现协议方法

 

 1 #pragma mark - UIWebViewDelegate
 2 
 3 //开始加载数据时调用
 4 - (void)webViewDidStartLoad:(UIWebView *)webView
 5 {
 6     NSLog(@"开始加载数据");
 7 }
 8 //结束加载数据时调用
 9 - (void)webViewDidFinishLoad:(UIWebView *)webView
10 {
11     NSLog(@"结束加载数据");
12 }
13 //加载失败时调用
14 - (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error
15 {
16     NSLog(@"加载失败");
17 }

 

注意:

  iOS9中引入了新特性ATS(App Transport Security),新特性要求App内使用的网络必须使用HTTPS协议,如果接口服务器不支持HTTPS,那么是不能访问网络的。

  为了网络安全,我们还是尽可能的改变服务器去支持HTTPS协议,当然,如果现在实现不了,可以使用以下方式来允许降级允许HTTP访问。

  改变网络传输为任意加载。

  方法为:右键info.plist,选择Open As,再选择Source Code,打开后,添加以下节点代码

 

1 <key>NSAppTransportSecurity</key>
2 <dict>
3      <key>NSAllowsArbitraryLoads</key>
4      <true/>
5 </dict>

 

 

 

 

 最终显示效果为:屏幕上显示博客园我的博客主页,整个网页显示出来。

 

 

 

 

posted @ 2015-12-19 08:28  cnzys  阅读(392)  评论(0编辑  收藏  举报