SFSafariViewController(API_AVAILABLE(iOS(9.0)))是iOS_9.0之后推出的一种视图控制器,继承与UIViewController,用于在为浏览web提供可见标准接口的对象,可以打开Safari相似浏览效果的网页。通俗的理解就是器功能类似于 WKWebView加载web页,不用跳转到Safari,就有了Safari浏览器完全功能。
SFSafariViewController视图控制器包括Safari的一些功能,如阅读器、自动填充、欺诈网站检测和内容拦截。在iOS9和iOS10中,它与Safari共享cookie和其他网站数据。用户与SFSafariViewController的活动和交互对您的应用程序不可见,应用程序无法访问自动填充数据、浏览历史记录或网站数据。您不需要在应用程序和Safari之间保护数据。如果你想在iOS 11或更高版本的应用程序和Safari之间共享数据,那么用户只需登录一次就可以了,使用SFAuthenticationSession。
需要注意:
根据App Store Review Guidelines(App Store审查指南),这个视图控制器必须用于向用户可见地呈现信息;控制器不得被其他视图或图层隐藏或遮挡。此外,未经用户知情和同意,应用程序不得使用SFSafariViewController跟踪用户。
如何选择用哪个控件展示web:
如果你的应用程序允许用户在互联网上任何地方查看web网站,使用SFSafariViewController类。如果您的应用程序定制、交互或控制web内容的显示,请使用WKWebView类。iOS_8.0之后苹果推出WKWebView来代替UIWebView,所以UIWebView不在讨论。
左上角按钮的样式 SFSafariViewControllerDismissButtonStyle;
特别注意,这个枚举是在iOS_11.0之后的方法
初始化SFSafariViewController。
控制器初始化时的配置,这个属性包括俩个:
BOOL entersReaderIfAvailable :是否使用阅读器功能。如想要显示的是 Wikipedia 的內容,要使用的是阅读器( Reader )的功能。阅读器是 Safari 中一個很方便的功能,可以从网站截取并显示重要的內容。
BOOL barCollapsingEnabled:当用户滚动web内容时,指示SFSafariViewController是否应启用导航栏的折叠和底部工具栏的隐藏,默认是YES。
SFSafariViewController上部和底部bar的背景颜色。
导航条下面进度条的颜色
在导航栏中用来关闭SFSafariViewController的解散按钮的样式。默认值是 SFSafariViewControllerDismissButtonStyleDone。有三种,以枚举的形式罗列出来,具体请看本文第一张图片所示。
SFSafariViewControllerDelegate
展示web页,下面俩个方法基本就够用了。
当用户单击导航栏左边的按钮调用委托回调,在这个调用中,视图控制器被销毁。
当SFSafariViewController完成加载传递给初始化器的URL时,将调用此方法。它不会在相同的SFSafariViewController实例中调用任何后续页面加载。