ios开发跳转safari_iOS 跳转网页的四种方法
跳转界面 push 展示网页
1.Safari :
openURL:自带很多功能 (进度条,刷新,前进,倒退..)就是打开了一个浏览器,跳出自己的应用
2.UIWebView:
没有功能,在当前应用中打开网页,自己去实现某些功能,但不能实现进度条功能(有些软件做了假进度条,故意卡到70%不动,加载完成前秒到100%)
3.SFSafariViewController:
iOS9+ 专门用来展示网页 需求:既想要在当前应用展示网页,又想要safari功能
需要导入#import 框架
#pragma mark - UICollectionViewDelegate
- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath{ // 小盒子的点击事件
BQLog(@"%@",indexPath);
// 跳转界面 push 展示网页
/*
1.Safari openURL:自带很多功能 (进度条,刷新,前进,倒退..)就是打开了一个浏览器,跳出自己的应用
2.UIWebView:没有功能,在当前应用中打开网页,自己去实现某些功能,但不能实现进度条功能
3.SFSafariViewController:iOS9+ 专门用来展示网页 需求:既想要在当前应用展示网页,又想要safari功能
需要导入#import 框架
4.WKWebView:iOS8+ (UIWebView升级版本)添加功能:1)监听进度条 2)缓存
*/
BQSquareItem *item = self.squareItems[indexPath.row];
if (![item.url containsString:@"http"]) {
return;
}
SFSafariViewController *safariVc = [[SFSafariViewController alloc] initWithURL:[NSURL URLWithString:item.url]];
// safariVc.delegate = self;
// self.navigationController.navigationBarHidden = YES;
// [self.navigationController pushViewController:safariVc animated:YES];
[self presentViewController:safariVc animated:YES completion:nil]; // 推荐使用modal自动处理 而不是push
}
4.WKWebView:
iOS8+ (UIWebView升级版本)添加功能:1)监听进度条 2)缓存
需要手动导入WebKit框架 编译器默认不会导入
- (void)viewDidLoad {
[super viewDidLoad];
// 添加WebView
WKWebView *webView = [[WKWebView alloc] init];
_webView = webView;
[self.contentView addSubview:webView];
// 加载网页
NSURLRequest *request = [NSURLRequest requestWithURL:self.url];
[webView loadRequest:request];
// KVO监听属性改变
/*
KVO使用:
addObserver:观察者
forKeyPath:观察webview哪个属性
options:NSKeyValueObservingOptionNew观察新值改变
注意点:对象销毁前 一定要记得移除 -dealloc
*/
[webView addObserver:self forKeyPath:@"canGoBack" options:NSKeyValueObservingOptionNew context:nil];
[webView addObserver:self forKeyPath:@"canGoForward" options:NSKeyValueObservingOptionNew context:nil];
[webView addObserver:self forKeyPath:@"title" options:NSKeyValueObservingOptionNew context:nil];
// 进度条
[webView addObserver:self forKeyPath:@"estimatedProgress" options:NSKeyValueObservingOptionNew context:nil];
}
- (void)viewDidLayoutSubviews{
[super viewDidLayoutSubviews];
_webView.frame = self.contentView.bounds;
}
#pragma mark - KVO
// 只要观察者有新值改变就会调用
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
self.backItem.enabled = self.webView.canGoBack;
self.forwardItem.enabled = self.webView.canGoForward;
self.title = self.webView.title;
self.progressView.progress = self.webView.estimatedProgress;
self.progressView.hidden = self.webView.estimatedProgress>=1;
}
- (void)dealloc {
[self.webView removeObserver:self forKeyPath:@"canGoBack"];
[self.webView removeObserver:self forKeyPath:@"canGoForward"];
[self.webView removeObserver:self forKeyPath:@"title"];
[self.webView removeObserver:self forKeyPath:@"estimatedProgress"];
}
#pragma mark - 按钮的点击事件
- (IBAction)goBack:(id)sender { // 回退
[self.webView goBack];
}
- (IBAction)goForward:(id)sender { // 前进
[self.webView goForward];
}
- (IBAction)reload:(id)sender { //刷新
[self.webView reload];
}
ios开发跳转safari_iOS 跳转网页的四种方法相关推荐
- vba打开html文件,vba打开网页的四种方法
内容提要:文章介绍在excel中vba打开网页的四种方法,分别使用API.SHELL函数.FollowHyperlink方法."InternetExplorer"对象来实现. Q: ...
- IOS开发笔记之推广安装(用网页判断是否安装App)
IOS开发笔记之推广安装(用网页判断是否安装App) 在做App推广的时候,我们经常会用到网页链接下载,亦或是一张二维码,最常见的做法就是将App在iTunes中的下载链接嵌入,当用户扫描或者点击网页 ...
- vue 路由跳转页面打开新页面_vue-router跳转时打开新页面的两种方法
vue-router跳转时打开新页面的两种方法 最近还是在痛苦的挣扎中 挣扎吧 记录一下在vue项目中如何实现跳转到一个新页面(一个比较简单又比较基础的问题了),有两个方法: 1.标签实现新窗口打开 ...
- php页面跳转的方法,PHP实现页面跳转的四种方法
PHP实现页面跳转的四种方法 发布时间:2020-05-20 11:36:01 来源:亿速云 阅读:172 作者:Leah 今天小编就为大家分享PHP实现页面跳转的四种方法.小编觉得挺实用的,为此分享 ...
- 路由跳转四种方法(带参)
路由跳转四种方法(带参) 方式1.router-link 1. 不带参数<router-link :to="{name:'home'}"> <router-lin ...
- 在HTML中使用CSS美化网页的三种方法
在HTML中使用CSS美化网页的三种方法 CSS是Cascading Style Sheets(级联样式表)的缩写,CSS是一种样式表语言,用于为HTML文档定义布局.例如,CSS涉及字体.颜色.边距 ...
- IOS中Json解析的四种方法
2019独角兽企业重金招聘Python工程师标准>>> 作为一种轻量级的数据交换格式,json正在逐步取代xml,成为网络数据的通用格式. 有的json代码格式比较混乱,可以使用此& ...
- 怎么在python下载网站内容-Python下载网页的几种方法
get和post方式总结 get方式:以URL字串本身传递数据参数,在服务器端可以从'QUERY_STRING'这个变量中直接读取,效率较高,但缺乏安全性,也无法来处理复杂的数据(只能是字符串,比如在 ...
- 【转】IOS中Json解析的四种方法
原文网址:http://blog.csdn.net/enuola/article/details/7903632 作为一种轻量级的数据交换格式,json正在逐步取代xml,成为网络数据的通用格式. 有 ...
最新文章
- 让VSCode的快捷键切换为WebStorm/IDEA的快捷键、修改颜色主题(深色模式)、文件图标主题
- [WCF] - Odata Service 访问失败,查看具体错误信息的方法
- 情境感知技术是什么?
- 最快删除大量文件的方法
- 原生Js封装的弹出框-弹出窗口-页面居中-多状态可选
- 日期setHours()方法以及JavaScript中的示例
- sql server中select语句需要申请的锁
- 在HTML中添加图片阴影,html – 如何在CSS中为图像添加内部阴影[复制]
- 从JS库的使用者转变成JS的开发者——第一篇 javascript对象
- 计算机网络简单理解总结
- ftp服务器要什么配置文件,ftp服务器要求什么电脑配置
- 解决WIN10“系统和压缩内存”“ntoskrnl.exe”系统空闲时占用大量CPU
- Onetab快速删除所有历史网页
- gbk编解码器无法解码的问题,有可能出题出在文件名上
- PostgreSQL 技术文档
- 北京市中小学信息学竞赛汇总
- CoppeliaSim+ROS2+Windows愉快玩耍(回顾Webots)
- 超简单lua (LOL)
- 紫光云数(新华三)面试经历(垃圾)
- QQ图片回复变色:从制作到发送