iOS开发:SFSafariViewController的用法

iOS开发:SFSafariViewController的用法,第1张

SFSafariViewController(API_AVAILABLE(iOS(90)))是iOS_90之后推出的一种视图控制器,继承与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网站 ,使用SFSafariViewController类。如果您的应用程序 定制、交互或控制web内容的显示 ,请使用WKWebView类。iOS_80之后苹果推出WKWebView来代替UIWebView,所以UIWebView不在讨论。

左上角按钮的样式 SFSafariViewControllerDismissButtonStyle;

特别注意,这个枚举是在iOS_110之后的方法

初始化SFSafariViewController。

控制器初始化时的配置,这个属性包括俩个:

BOOL  entersReaderIfAvailable :是否使用阅读器功能。如想要显示的是 Wikipedia 的内容,要使用的是阅读器( Reader )的功能。阅读器是 Safari 中一个很方便的功能,可以从网站截取并显示重要的内容。

BOOL  barCollapsingEnabled:当用户滚动web内容时,指示SFSafariViewController是否应启用导航栏的折叠和底部工具栏的隐藏,默认是YES。

SFSafariViewController上部和底部bar的背景颜色。

导航条下面 进度条的颜色

在导航栏中用来关闭SFSafariViewController的解散按钮的样式。默认值是 SFSafariViewControllerDismissButtonStyleDone。有三种,以枚举的形式罗列出来,具体请看本文第一张所示。

展示web页,下面俩个方法基本就够用了。

当用户单击导航栏左边的按钮调用委托回调,在这个调用中,视图控制器被销毁。

当SFSafariViewController完成加载传递给初始化器的URL时,将调用此方法。它不会在相同的SFSafariViewController实例中调用任何后续页面加载。

iOS程序基本上都是用mvc框架开发的。视图就是view,控制器就是controller。也就是说,视图控制器就是控制视图的,它是一个容器。 这个委托就是,有件事情,一个类A自己不想做,他定义了一个协议,设置的一个代理对象。只要另外的一个对象遵守了这个协议,并且成为了那个类A的代理对象,就能代替A去做那件事情了。 委托可以用block实现,就是用于传递信息而已。 纯手打,望采纳,实在不明白再联系我,这地新手得理解个一两个月。其实做项目时间长了,就自然而然理解了。

TwoViewController twoView = [[TwoViewController alloc]init];\x0d\\x0d\ UINavigationController navigation = [[UINavigationController alloc]initWithRootViewController:twoView];\x0d\\x0d\ [self presentViewController:navigation animated:YES completion:nil];

1导航类型 UINavigationController 适用于父子页面的跳转 UITabBarController 适用于平级页面的跳转 2presentViewController / dismissViewControllerAnimated和pushViewController / popViewController (1)只有从UINavigationController导航过来的UIViewController 才可以使用pushViewController / popViewController,从其它导航进入的只能使用presentViewController / dismissViewControllerAnimated (2)如果A界面是通过presentViewController进入的,那么在A界面里只能使用presentViewController导航,如果A界面是通过UINavigationController包装了一层进入,则可使用pushViewController导航。 (3)如果A界面是一个UITabBarController,进入时是通过presentViewController来导航的,那么子Tab里也只能通过presentViewController来导航,如果进入时是通过UINavigationController包装了一层进入,则可使用[selftabBarControllernavigationController pushViewController:abcdViewController animated:true];这种方式导航。 3修改UINavigationController导航进入后导航栏的图标及文字 UIBarButtonItem leftBar = [[UIBarButtonItem alloc]initWithTitle:@"返回" style:UIBarButtonItemStylePlain target:self action:@selector(homeBack)]; selfnavigationItemleftBarButtonItem = leftBar; //可添加多个导航按钮 // selfnavigationItemleftBarButtonItems = nil; //同样右边的导航按钮也可以设置 4创建UITabBarController时需注意,要先创建出来,然后通过UINavigationController包装后才能显示,否则tab子项不显示。创建格式如下 Java代码 TabOneViewController oneVC = [[TabOneViewController alloc]init]; oneVCviewbackgroundColor = [UIColor whiteColor]; UITabBarItem item1 = [[UITabBarItem alloc]initWithTitle:@"tab1" image:nil tag:0]; oneVCtabBarItem = item1; TabTwoViewController twoVC = [[TabTwoViewController alloc]init]; UITabBarItem item2 = [[UITabBarItem alloc]initWithTitle:@"tab2" image:nil tag:1]; twoVCtabBarItem = item2; HomeViewController homeVC = [[HomeViewController alloc]init]; NSArray array = [[NSArray alloc]initWithObjects:oneVC,twoVC, nil]; homeVCviewControllers = array; UINavigationController navVC = [[UINavigationController alloc]initWithRootViewController:homeVC]; [self presentViewController:navVC animated:YES completion:^{}]; //下面这种创建了HomeViewController后,HomeViewController下的子Tab不能通过push或者pop导航 // HomeViewController homeVC = [[HomeViewController alloc]init]; // [self presentViewController:homeVC animated:YES completion:^{}]; 5UITabBarController各页面之间的切换 实现UITabBarControllerDelegate协议 //实现协议方法,用于切换Tab时,更改页面的标题 -(void)tabBarController:(UITabBarController )tabBarController didSelectViewController:(UIViewController )viewController { NSInteger index = tabBarControllerselectedIndex; NSString title; switch (index) { case 0: title = @"Message"; break; case 1: title = @"User List"; break; } selftitle

以上就是关于iOS开发:SFSafariViewController的用法全部的内容,包括:iOS开发:SFSafariViewController的用法、请问在iOS里 视图、视图控制器、视图控制器的委托有什么区别和作用、ios模态视图上到导航控制器怎么弄出来等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/web/9597176.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存