iOS 9 -- SFSafariViewController
1.在开发中用到网页是经常的事,当是有时候我们加载网页时候会出现一些缓慢、效率低、占内存等问题。
网页的出现在1991年,而iOS系统的出现在2007年。iPhone出现的时候就已经有很多的web内容了,这样iOS必须提供一种方法来显示web内容。
在iOS 9中,我们有不同的方法来渲染web内容,并且根据具体的需求,开发者可以评估不同的方法,然后选择一个更适合他们的方法。让我们看看开发者可以采用的不同的解决方案。
UIWebView的使用:
UIWebView是web使用的始祖,它可以适应各种iOS版本,可支持打开各种不同文件格式,例如 txt,docx,ppt,,音视频文件等。
缺点就是占用内存大,使用效率低、不灵活。无法清除本地缓存数据。
WKWebView是在iOS8出现后引入的,比UIWebView年轻,效率方面也比它高,但是好像bug挺多的
iOS9后引入了SFSafariViewController
下面就介绍一下SFSafariViewController的使用
这是一个特殊的View Controller,而不是一个单独的 View,和前面两个的区别
在当前App中使用Safari的UI框架展现Web内容,包括相同的地址栏,工具栏等,类似一个内置于App的小型Safari
共享Safari的一些便利特性,包括:相似的用户体验,和Safari共享Cookie,iCloud Web表单数据,密码、证书自动填充,Safari阅读器(Safari Reader)
可定制性比较差,甚至连地址栏都是不可编辑的,只能在init的时候,传入一个URL来指定网页的地址
首先得引入工程中得#import <SafariServices/SafariServices.h>
代码:
#import <SafariServices/SafariServices.h>
@interface ViewController ()<SFSafariViewControllerDelegate>
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
//打开点击按钮
UIButton *openClickBtn = [[UIButton alloc]initWithFrame:CGRectMake(self.view.frame.size.width/2-50, self.view.frame.size.height/2-15, 100, 30)];
[openClickBtn setTitle:@"打开网页" forState:UIControlStateNormal];
[openClickBtn setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
[openClickBtn addTarget:self action:@selector(openClick) forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:openClickBtn];
}
- (void)openClick{
NSString *urlStr = @"http://www.baidu.com";
SFSafariViewController *sfViewController =[[SFSafariViewController alloc]initWithURL:[NSURL URLWithString:urlStr]];
sfViewController.delegate = self;
[self presentViewController:sfViewController animated:YES completion:^{
}];
}