iOS去掉webview自带导航栏

2018-05-23  本文已影响668人  木马不在转

有时候我们webView加载的网页有自己的导航栏,这样就和系统的导航栏重复了如下图:


二个导航栏

有二种方法解决:
1.隐藏系统的导航栏,和就是做交互来实现网页里返回事件(不推荐)。
2.隐藏网页导航(推荐)。
其实我们只要我们在webView的加载结束代理里隐藏掉html里的header标签就可以隐藏网页的导航栏。
代码如下:

 - (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;

}
上一篇 下一篇

猜你喜欢

热点阅读