三行代码实现iOS9新功能-SFSafariViewController
2016-07-17 23:09
281 查看
转在于 http://www.2cto.com/kf/201605/507960.html
我们直接来看完整的代码:
?
除去导入头文件、声明类、多余的空行和大括号,真正的实现代码只有三行。
为了演示这个效果,我们在storyboard中拖入一个button,与openWithSafariVC函数建立连接。
运行,如下图所示:
点击Button按钮,效果如下图所示:
可以看到它有很多功能,比如下面的前进、后退、分享、在safari中打开,以及左上角的Done返回按钮。
而做到这些,我们一共只用了三行代码!
注意,如果没有显示成功,可能是以下问题:
1. SFSafariViewController 只能用于 iOS 9 以上
2. 你可能没有翻墙?把网址换成 https://baidu.com 试试
3. 这点基本上是常识了,打开 Info.plist,点击加号添加一项 App Transport Security Settings,在它下面添加一项 Allow Arbitrary Loads,并设置值为 YES
我们来理清一下 UIWebView、WKWebView、SFSafariViewController 之间的关系:
iOS 7 支持 UIWebView
iOS 8 支持 UIWebView、WKWebView
iOS 9 支持 UIWebView、WKWebView、SFSafariViewController
那么,SFSafariViewController 有什么优点?为什么我们要用它?
向用户展现一个网页,无非就是这么几种方式:
1. 使用 openURL(_:) 在 safari 中打开网页,比如:
?
但是这样就会导致用户离开你的应用进入 safari 中,显然我们更希望用户能一直待在我们写的应用里。(难道不是吗0.0)
2. 使用 UIWebView 或 WKWebView 来自定义。但是如果想获得 safari 的那些功能,这样做就要写不少代码。
然而有了 SFSafariViewController,我们就可以只用非常少的代码就能获得 safari 几乎所有的功能,而且用户不会离开我们的应用。
但是它自然也有缺点。它不能定制,只能通过上面代码中写的那种 present 方式出现,而不能通过 navigationController.pushViewController 的方式出现。这就导致很多场景不适合用它。
事实上,跟 SFSafariViewController 有关的方法一共才只有五个,其中两个是初始化方法,剩下的三个都是代理方法。
因此它用起来很简单,但是也导致了它不能定制的问题。虽然用 UIWebView、WKWebView 来自定义要写不少代码,但是它们的好处就是可以定制。
SFSafariViewController 只能用于 iOS 9 以后,所以我们现在的项目里还不能用它,使用 iOS 9 以前版本的用户还有很多,我们要兼容他们。不过我觉得这个新东西真的挺不错的,也许过几年真的能替代 UIWebView、WKWebView~
我们直接来看完整的代码:
?
为了演示这个效果,我们在storyboard中拖入一个button,与openWithSafariVC函数建立连接。
运行,如下图所示:
点击Button按钮,效果如下图所示:
可以看到它有很多功能,比如下面的前进、后退、分享、在safari中打开,以及左上角的Done返回按钮。
而做到这些,我们一共只用了三行代码!
注意,如果没有显示成功,可能是以下问题:
1. SFSafariViewController 只能用于 iOS 9 以上
2. 你可能没有翻墙?把网址换成 https://baidu.com 试试
3. 这点基本上是常识了,打开 Info.plist,点击加号添加一项 App Transport Security Settings,在它下面添加一项 Allow Arbitrary Loads,并设置值为 YES
我们来理清一下 UIWebView、WKWebView、SFSafariViewController 之间的关系:
iOS 7 支持 UIWebView
iOS 8 支持 UIWebView、WKWebView
iOS 9 支持 UIWebView、WKWebView、SFSafariViewController
那么,SFSafariViewController 有什么优点?为什么我们要用它?
向用户展现一个网页,无非就是这么几种方式:
1. 使用 openURL(_:) 在 safari 中打开网页,比如:
?
2. 使用 UIWebView 或 WKWebView 来自定义。但是如果想获得 safari 的那些功能,这样做就要写不少代码。
然而有了 SFSafariViewController,我们就可以只用非常少的代码就能获得 safari 几乎所有的功能,而且用户不会离开我们的应用。
但是它自然也有缺点。它不能定制,只能通过上面代码中写的那种 present 方式出现,而不能通过 navigationController.pushViewController 的方式出现。这就导致很多场景不适合用它。
事实上,跟 SFSafariViewController 有关的方法一共才只有五个,其中两个是初始化方法,剩下的三个都是代理方法。
因此它用起来很简单,但是也导致了它不能定制的问题。虽然用 UIWebView、WKWebView 来自定义要写不少代码,但是它们的好处就是可以定制。
SFSafariViewController 只能用于 iOS 9 以后,所以我们现在的项目里还不能用它,使用 iOS 9 以前版本的用户还有很多,我们要兼容他们。不过我觉得这个新东西真的挺不错的,也许过几年真的能替代 UIWebView、WKWebView~
相关文章推荐
- iOS 创建多线程的几种方法
- iOS性能优化(转载)
- iOS中GCD的使用
- ios设计模式之模板设计模式
- iOS开发- Xcode 7添加pch文件
- iOS运行时Runtime浅析
- iOS开发内购全套图文教程
- iOS 基于AVPLayer封装视频播放器
- iOS中内存管理
- iOS 中控制器的创建方法
- 九宫格的计算
- iOS多线程编程——浅谈GCD
- iOS Quartz 2D介绍
- new和alloc
- Best iOS 9 Cydia Tweaks (Cont.)
- iOS Core Graphics基础入门(3)
- iOS多线程加锁
- iOS获取经纬度
- iOS 属性修饰符的区别
- iOS开发 一些常用的正则表达式工具类