@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. 如何使用Delphi编写Modbus RTU CRC16的校验码

    在工业控制中,Modbus RTU CRC16的校验码用的比较广泛,包括本人富士产品中,PC与伺服电机以及PC与VP系列的变频器的Modbus RTU通讯中都使用到了CRC16.     而对CRC1 ...

  2. Visual Studio Debug和Release的区别及obj的作用

    一.Debug和Release的区别      1.Debug:调试版本,包含调试信息,所以容量比Release大很多,并且不进行任何优化(优化会使调试复杂化,因为源代码和生成的指令间关系会更复杂), ...

  3. Http标准协议Android网络框架——NoHttp

    NoHttp详细文档:http://doc.nohttp.net NoHttp公益测试接口:http://api.nohttp.net 支持与RxJava完美结合.支持一句话切换底层为OkHttp,支 ...

  4. python3.6使用pickle序列化class

    from library.connecter.database.mongo import Op_Mongo a = pickle.dumps(Op_Mongo) #序列化 b = pickle.loa ...

  5. axure产品原型图,元件库导入方法

    axure是公司产品经理常用的软件,用来绘制产品原型图. 为了画出漂亮的原型图,需要各色各样的元件.因此导入各类元件库很有用处: 打开元件库视图: 载入元件库,选择事先下载好的元件 元件库下载:htt ...

  6. AJAX enabled & disabled

    @model string           @{    ViewBag.Title = "GetPeople";    AjaxOptions ajaxOpts = new A ...

  7. hibernate中对象的3种状态:瞬时态(Transient)、 持久态(Persistent)、脱管态(Detached)

    Hibernate的对象有3种状态,分别为:瞬时态(Transient). 持久态(Persistent).脱管态(Detached). 处于持久态的对象也称为PO(Persistence Objec ...

  8. 解决The prefix 'context' for element 'context:component-scan' is not bound

    <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w ...

  9. 安装ansj分词器

    项目地址:https://github.com/4onni/elasticsearch-analysis-ansj https://github.com/laigood/elasticsearch-a ...

  10. zabbix通过percona插件监控mysql

    percona zabbix mysql-plugin是percona发布的一个使用zabbix监控mysql数据库的工具,这款工具比zabbix自带的监控模板要强大的多,毕竟percona是Mysq ...