@property (nonatomic, copy) NSString * url;

@interface WebViewController ()<UIWebViewDelegate,UIGestureRecognizerDelegate>

@property (nonatomic, weak) UIWebView * webView;

@property (nonatomic, weak) UIButton * backItem;

@property (nonatomic, weak) UIButton * closeItem;

@property (nonatomic, weak) UIActivityIndicatorView * activityView;

@end

@implementation WebViewController

- (void)viewDidLoad {

[super viewDidLoad];

self.view.backgroundColor = [UIColor whiteColor];

[self initNaviBar];

[self initWebView];

}

- (void)initWebView{

UIWebView *webView = [[UIWebView alloc]initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height)];

webView.delegate = self;

[self.view addSubview:webView];

self.webView = webView;

//activityView

UIActivityIndicatorView *activityView = [[UIActivityIndicatorView alloc]initWithActivityIndicatorStyle:UIActivityIndicatorViewStyleGray];

activityView.center = self.view.center;

[activityView startAnimating];

self.activityView = activityView;

[self.view addSubview:activityView];

//清除UIWebView的缓存

[[NSURLCache sharedURLCache] removeAllCachedResponses];

[self.webView loadRequest:[NSURLRequest requestWithURL:[NSURL URLWithString:self.url] cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:10.0]];

}

- (void)initNaviBar{

UIView * backView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, 100, 44)];

backView.backgroundColor = [UIColor purpleColor];

UIButton * backItem = [[UIButton alloc]initWithFrame:CGRectMake(0, 0, 56, 44)];

[backItem setImage:[UIImage imageNamed:@"back_arrow"] forState:UIControlStateNormal];

[backItem setImageEdgeInsets:UIEdgeInsetsMake(0, -15, 0, 0)];

[backItem setTitle:@"返回" forState:UIControlStateNormal];

[backItem setTitleEdgeInsets:UIEdgeInsetsMake(0, -15, 0, 0)];

[backItem setTitleColor:[UIColor colorWithRed:0.000 green:0.502 blue:1.000 alpha:1.000] forState:UIControlStateNormal];

[backItem addTarget:self action:@selector(clickedBackItem:) forControlEvents:UIControlEventTouchUpInside];

self.backItem = backItem;

[backView addSubview:backItem];

UIButton * closeItem = [[UIButton alloc]initWithFrame:CGRectMake(44+12, 0, 44, 44)];

[closeItem setTitle:@"关闭" forState:UIControlStateNormal];

[closeItem setTitleColor:[UIColor colorWithRed:0.000 green:0.502 blue:1.000 alpha:1.000] forState:UIControlStateNormal];

[closeItem addTarget:self action:@selector(clickedCloseItem:) forControlEvents:UIControlEventTouchUpInside];

closeItem.hidden = YES;

self.closeItem = closeItem;

[backView addSubview:closeItem];

UIBarButtonItem * leftItemBar = [[UIBarButtonItem alloc]initWithCustomView:backView];

self.navigationItem.leftBarButtonItem = leftItemBar;

self.navigationController.interactivePopGestureRecognizer.enabled = YES;

self.navigationController.interactivePopGestureRecognizer.delegate = self;

}

- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer

{

if (self.webView.canGoBack) {

[self.webView goBack];

self.closeItem.hidden = NO;

return NO;

}

return YES;

}

#pragma mark - clickedBackItem

- (void)clickedBackItem:(UIBarButtonItem *)btn{

if (self.webView.canGoBack) {

[self.webView goBack];

self.closeItem.hidden = NO;

}else{

[self clickedCloseItem:nil];

}

}

#pragma mark - clickedCloseItem

- (void)clickedCloseItem:(UIButton *)btn{

[self.navigationController popViewControllerAnimated:YES];

}

#pragma mark - UIWebViewDelegate

- (void)webViewDidStartLoad:(UIWebView *)webView{

self.activityView.hidden = NO;

}

- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{

NSLog(@"url: %@", request.URL.absoluteURL.description);

if (self.webView.canGoBack) {

self.closeItem.hidden = NO;

}

return YES;

}

- (void)webViewDidFinishLoad:(UIWebView *)webView{

self.activityView.hidden = YES;

self.title = [webView stringByEvaluatingJavaScriptFromString:@"document.title"];

}

- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{

self.activityView.hidden = YES;

}

ios -仿微信有多级网页时,显示返回跟关闭按钮的更多相关文章

  1. 微信QQ打开网页时提示用浏览器打开

    微信QQ打开网页时提示用浏览器打开 一,需求分析 1.1,使用微信或QQ打开网址时,无法在微信或QQ内打开常用下载软件,手机APP等.故此需要在微信qq里提示 二,功能实现 2.1 html实现 &l ...

  2. android高仿微信UI点击头像显示大图片效果

    用过微信的朋友朋友都见过微信中点击对方头像显示会加载大图,先贴两张图片说明下: 这种UI效果对用户的体验不错,今天突然有了灵感,试着去实现,结果就出来了.. 下面说说我的思路: 1.点击图片时跳转到另 ...

  3. iOS - 仿微信朋友圈视频剪切功能

    分析需求 我们先看一看微信的界面 微信效果图 1.页面下部拖动左边和右边的白色竖条控制剪切视频的开始和结束时间,预览界面跟随拖动位置跳到视频相应帧画面,控制视频长度最长15秒,最短5秒 2.拖动下部图 ...

  4. IOS仿微信朋友圈好友展示

    前几天小伙伴要帮他做一个群聊功能,里面有好友列表,要求和微信的差不多(见下图),让小伙伴自己实现了下,他将CollectionView放在tableView的tableHead中,可是当添加好友或删除 ...

  5. android高仿微信UI点击头像显示大图片效果, Android 使用ContentProvider扫描手机中的图片,仿微信显示本地图片效果

    http://www.cnblogs.com/Jaylong/archive/2012/09/27/androidUI.html http://blog.csdn.net/xiaanming/arti ...

  6. iOS实现微信外部H5支付完成后返回原APP

    看到微信最近放开了微信H5支付,公司决定把H5集成到多款APP上.下面记录下了开发过程. 由于是微信新推出的支付方式,在网上搜索到的相关资料并不多,其中有一篇文件(点此跳转)对我的整个开发过程起到了很 ...

  7. h5聊天室web端(仿微博、微信)|h5仿微信网页端|仿微信界面弹窗

    这段时间一直在着手h5开发手机端聊天系统——html5仿微信聊天室,最近又在原先基础上开发了一个仿微信.微博网页web版聊天系统,使用到了HTML5+css3+jQuery+wcpop等技术开发,弹窗 ...

  8. Android -- 真正的 高仿微信 打开网页的进度条效果

    (本博客为原创,http://www.cnblogs.com/linguanh/) 目录: 一,为什么说是真正的高仿? 二,为什么要搞缓慢效果? 三,我的实现思路 四,代码,内含注释 五,使用方法与截 ...

  9. 仿微信中加载网页时带线行进度条的WebView的实现

    finddreams:http://blog.csdn.net/finddreams/article/details/44172639 为了仿微信中加载网页时带进度条的WebView的实现,首先我们来 ...

随机推荐

  1. Matlab绘图时横坐标重叠怎么办

    如横坐标重叠了,咋回事?蛋疼. 后来发现plot里已经横坐标1到50了,我又写了个 set(gca,'XTick',1:1:50);没写XTickLabel,后来我把XTick注视了就好了.

  2. What is Mocking?

    Mocking is primarily used in unit testing. An object under test may have dependencies on other (comp ...

  3. Android API level 与version对应关系

    https://www.cnblogs.com/jinglecode/p/7753107.html Platform Version API Level VERSION_CODE 中文名称 Andro ...

  4. util.select.js

    ylbtech-JavaScript-util: util.select.js 筛选工具 1.A,JS-效果图返回顶部   1.B,JS-Source Code(源代码)返回顶部 1.B.1, m.y ...

  5. go语言的一些特性

    go语言中如何判断一个方法是私有的还是公有的?说出来你可能不信,通过首字母的大小写. 不管是一个变量还是一个函数,如果它的首字母是大写的,那么它就是包外可见的,也就是说可以 从这个包的外面访问这个资源 ...

  6. [Algorithm] Heap data structure and heap sort algorithm

    Source, git Heap is a data structure that can fundamentally change the performance of fairly common ...

  7. A Quick Look at P3P

    P3P Made Simple By default, IE will reject cookies coming from 3rd-party contexts. A 3rd-party conte ...

  8. Laravel之队列

    一.配置 队列配置文件存放在config/queue.php .在该文件中你将会找到框架自带的每一个队列驱动的连接配置,包括数据库.Beanstalkd. IronMQ. Amazon SQS. Re ...

  9. jquery技术揭秘静态工具函数源码重构

    1.调用页面 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...

  10. ASP.NET常见命名空间及其功能描述

    命名空间 |  功能描述 System |  包含CLR的基本类型和基类,定义了常用的值类型和引用类型,事件.接口.属性和异常处理等 System.Text | 包含用于文本处理的类,实现了不同编码方 ...