去掉webview自带导航栏 使用系统导航栏
2017-06-16 15:56
253 查看
有这样一个页面 加载了一个网页 网页自带导航栏 这时会与系统导航栏重复 这里简单地进行处理 去掉网页的导航栏 使用系统自带的导航栏实现返回功能 标题的显示
- (void)viewDidLoad {
[superviewDidLoad];
/// 隐藏系统返回按钮 进行自定义
self.navigationItem.hidesBackButton
= YES;
self.navigationItem.leftBarButtonItem
= [[UIBarButtonItemalloc]initWithImage:[UIImageimageNamed:@"backicon"]style:UIBarButtonItemStylePlaintarget:selfaction:@selector(backacrion)];
[selfsetupView];
}
- (void)setupView {
/// 添加加载菊花
self.hud = [MBProgressHUDshowHUDAddedTo:self.navigationController.viewanimated:YES];
self.hud.label.textColor
= fontColor;
self.hud.label.font
= [UIFont
systemFontOfSize:15];
self.hud.mode
= MBProgressHUDModeIndeterminate;
//创建webview
_webView = [[UIWebViewalloc]initWithFrame:CGRectMake(0,0,appWidth,appHeight
-64)];
[_webViewloadRequest:[NSURLRequestrequestWithURL:[NSURLURLWithString:self.url]]];
_webView.delegate =self;
[self.viewaddSubview:_webView];
}
- (void)backacrion{
if ([self.webViewcanGoBack])
{
/// 网页可以返回 就进行网页返回
[self.webViewgoBack];
}else{
[self.viewresignFirstResponder];
/// 网页返回到首页了 返回不了了 这时候我们的控制器返回
[self.navigationControllerpopViewControllerAnimated:YES];
}
}
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest
*)request navigationType:(UIWebViewNavigationType)navigationType{
self.hud.hidden =NO;
self.webView.hidden =YES;
returnYES;
}
在网页加载结束的时候获取头标签进行去除操作
使用谷歌浏览器的开发者工具查看网页源代码 寻找头标签
- (void)webViewDidFinishLoad:(UIWebView *)webView {
// 1.获取页面标题
NSString *string =@"document.title";
//获取当前页面的title
设置导航栏标题
NSString * title = [webViewstringByEvaluatingJavaScriptFromString:@"document.title"];
self.title = title;
[webView stringByEvaluatingJavaScriptFromString:string];
// 2.去掉页面标题
NSMutableString *str = [NSMutableStringstring];
// 3.根据标签类型获取指定标签的元素
[str appendString:@"var header = document.getElementsByTagName(\"header\")[0];"];
[str appendString:@"header.parentNode.removeChild(header);"];//移除头部的导航栏
[webView stringByEvaluatingJavaScriptFromString:str];
[selfperformSelector:@selector(hidenaction)withObject:selfafterDelay:0.1];
}
- (void)hidenaction{
/// 开始加载时隐藏webview 加载完后显示,原因是 因为我们要去掉头标签,,去掉的方法是在网页加载完毕进行的,,添加一个延时现实的方法 可以隐藏掉网页先显示头标签又被移除的过程。使其看起来更自然一些
self.webView.hidden =NO;
self.hud.hidden =YES;
}
完成效果
- (void)viewDidLoad {
[superviewDidLoad];
/// 隐藏系统返回按钮 进行自定义
self.navigationItem.hidesBackButton
= YES;
self.navigationItem.leftBarButtonItem
= [[UIBarButtonItemalloc]initWithImage:[UIImageimageNamed:@"backicon"]style:UIBarButtonItemStylePlaintarget:selfaction:@selector(backacrion)];
[selfsetupView];
}
- (void)setupView {
/// 添加加载菊花
self.hud = [MBProgressHUDshowHUDAddedTo:self.navigationController.viewanimated:YES];
self.hud.label.textColor
= fontColor;
self.hud.label.font
= [UIFont
systemFontOfSize:15];
self.hud.mode
= MBProgressHUDModeIndeterminate;
//创建webview
_webView = [[UIWebViewalloc]initWithFrame:CGRectMake(0,0,appWidth,appHeight
-64)];
[_webViewloadRequest:[NSURLRequestrequestWithURL:[NSURLURLWithString:self.url]]];
_webView.delegate =self;
[self.viewaddSubview:_webView];
}
- (void)backacrion{
if ([self.webViewcanGoBack])
{
/// 网页可以返回 就进行网页返回
[self.webViewgoBack];
}else{
[self.viewresignFirstResponder];
/// 网页返回到首页了 返回不了了 这时候我们的控制器返回
[self.navigationControllerpopViewControllerAnimated:YES];
}
}
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest
*)request navigationType:(UIWebViewNavigationType)navigationType{
self.hud.hidden =NO;
self.webView.hidden =YES;
returnYES;
}
在网页加载结束的时候获取头标签进行去除操作
使用谷歌浏览器的开发者工具查看网页源代码 寻找头标签
- (void)webViewDidFinishLoad:(UIWebView *)webView {
// 1.获取页面标题
NSString *string =@"document.title";
//获取当前页面的title
设置导航栏标题
NSString * title = [webViewstringByEvaluatingJavaScriptFromString:@"document.title"];
self.title = title;
[webView stringByEvaluatingJavaScriptFromString:string];
// 2.去掉页面标题
NSMutableString *str = [NSMutableStringstring];
// 3.根据标签类型获取指定标签的元素
[str appendString:@"var header = document.getElementsByTagName(\"header\")[0];"];
[str appendString:@"header.parentNode.removeChild(header);"];//移除头部的导航栏
[webView stringByEvaluatingJavaScriptFromString:str];
[selfperformSelector:@selector(hidenaction)withObject:selfafterDelay:0.1];
}
- (void)hidenaction{
/// 开始加载时隐藏webview 加载完后显示,原因是 因为我们要去掉头标签,,去掉的方法是在网页加载完毕进行的,,添加一个延时现实的方法 可以隐藏掉网页先显示头标签又被移除的过程。使其看起来更自然一些
self.webView.hidden =NO;
self.hud.hidden =YES;
}
完成效果
相关文章推荐
- 【Android】webView 使用 系统自带搜索对话框问题
- 如何在WebView中点击链接,使用自己的activity打开,不调用系统自带的浏览器
- android开发我的新浪微博客户端-OAuth认证过程中用WebView代替原来的系统自带浏览器
- android开发我的新浪微博客户端-OAuth认证过程中用WebView代替原来的系统自带浏览器
- WebView长按后调用系统自带功能复制文字
- 抛弃Android自带webview浏览器内核,使用腾讯X5服务webview浏览器
- iOS 自定义view 如何不使用self.view也就是系统自带的 view,使用自己定制的view
- Android强制使用WebView不调用系统或外部浏览器
- 把网页加载进安卓显示,及其android系统webview控件使用详解
- iOS用WKWebView与JS交互获取系统图片及WKWebView的Alert,Confirm,TextInput的监听代理方法使用,屏蔽WebView的可选菜单
- Android模块化编程——WebView使用之系统返回键设置
- Android使用webview调用系统浏览器以及项目内显示并支持图片和输入
- 让android webView使用系统默认浏览器内核直接解析,不弹出选择浏览器选项
- 抛弃Android自带webview,使用腾讯qq浏览器x5内核的webview浏览器
- android开发我的新浪微博客户端-OAuth认证过程中用WebView代替原来的系统自带浏览器
- OAuth认证过程中用WebView代替原来的系统自带浏览器
- Android使用WebView加载网页屏蔽系统浏览器的方法
- iOS用WKWebView与JS交互获取系统图片及WKWebView的Alert,Confirm,TextInput的监听代理方法使用,屏蔽WebView的可选菜单
- 在Android系统中使用WebViewClient处理跳转URL的方法