ios7导航栏返回按钮的一些问题总结
2016-03-16 15:28
615 查看
iOS 7中在传统的左上角返回键之外,提供了右滑返回上一级界面的手势。
也就是说,我可以不仅仅通过back返回键,回到push前页面.还可以通过向右滑的手势来完成这样的操作.
UINavigationController中新增的属性:
interactivePopGestureRecognizer,即右滑返回只支持以UINavigationController为容器的ViewController间切换,要想在自定义容器中使用,需要一些额外的工作。
围绕在手势方面有一下几个问题:
1>如何禁止某个返回页面的滑动手势触发
注意:self.navigationController.interactivePopGestureRecognizer.enabled
= NO;这句一定要放在viewDidAppear而不是viewWillAppear里。
2>如何让滑动手势触发失效
3> 如何设置自定义的返回按钮图片?
如果我们的返回按钮不需要显示文字,或者显示的文字是固定的,可以做到图片中去,那么我推荐通过设置 iOS 7 新引入的 backIndicatorImage 来自定义返回按钮。代码如下:
这样设置后会发现图片被渲染成 navigationBar 的 tintColor 的颜色了,要怎样才能显示出原始的图片颜色呢?还需要用到 iOS 7 中 UIImage 的一个新属性 renderingMode。 我们需要生成一张 renderingMode 为 UIImageRenderingModeAlwaysOriginal 的图片,让我们加上这行代码:
这样我们的图片就能显示出原始的颜色了。
4>自定义导航栏后侧滑返回功能失效
没有发现更好的解释,但可以参考 http://www.jianshu.com/p/349636eb3fca
也就是说,我可以不仅仅通过back返回键,回到push前页面.还可以通过向右滑的手势来完成这样的操作.
UINavigationController中新增的属性:
@property(nullable,nonatomic, weak)id<UINavigationControllerDelegate> delegate; @property(nullable,nonatomic, readonly)UIGestureRecognizer *interactivePopGestureRecognizer
interactivePopGestureRecognizer,即右滑返回只支持以UINavigationController为容器的ViewController间切换,要想在自定义容器中使用,需要一些额外的工作。
围绕在手势方面有一下几个问题:
1>如何禁止某个返回页面的滑动手势触发
- (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:YES]; self.navigationController.interactivePopGestureRecognizer.enabled = YES; } - (void)viewDidAppear:(BOOL)animated { [super viewDidAppear:YES]; self.navigationController.interactivePopGestureRecognizer.enabled = NO; }
注意:self.navigationController.interactivePopGestureRecognizer.enabled
= NO;这句一定要放在viewDidAppear而不是viewWillAppear里。
2>如何让滑动手势触发失效
if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) { self.navigationController.interactivePopGestureRecognizer.enabled = NO; }
3> 如何设置自定义的返回按钮图片?
如果我们的返回按钮不需要显示文字,或者显示的文字是固定的,可以做到图片中去,那么我推荐通过设置 iOS 7 新引入的 backIndicatorImage 来自定义返回按钮。代码如下:
UIImage *image = [UIImage imageNamed:@"nav_back_btn"]; [UINavigationBar appearance].backIndicatorImage = image; [UINavigationBar appearance].backIndicatorTransitionMaskImage = image;
这样设置后会发现图片被渲染成 navigationBar 的 tintColor 的颜色了,要怎样才能显示出原始的图片颜色呢?还需要用到 iOS 7 中 UIImage 的一个新属性 renderingMode。 我们需要生成一张 renderingMode 为 UIImageRenderingModeAlwaysOriginal 的图片,让我们加上这行代码:
UIImage *image = [UIImage imageNamed:@"nav_back_btn"]; image = [image imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; [UINavigationBar appearance].backIndicatorImage = image; [UINavigationBar appearance].backIndicatorTransitionMaskImage = image;
这样我们的图片就能显示出原始的颜色了。
4>自定义导航栏后侧滑返回功能失效
没有发现更好的解释,但可以参考 http://www.jianshu.com/p/349636eb3fca
相关文章推荐
- IOS开发把一个结构体放到数组中
- iOS开发视图控制器(ViewController)调用[super viewXXX]的简单理解
- iOS与JS交互实战篇(ObjC版)
- IOS学习 使用OCMock单元测试(一)安装
- ios 开发过程中遇到的一些需要注意的地方
- 浅析iOS中实例方法和类方法
- iOS开发 CocoaPods 的安装流程
- 分析iOS Crash文件:符号化iOS Crash文件的3种方法
- iOS取整
- iOS开发资源:VideoPlayerKit、AHAlertView以及REMenu等
- smartsvn解决冲突的方法
- iOS NSURLSession后台下载和断点续传
- 用HTML5/CSS3/JS开发Android/IOS应用框架大全
- IOS中正则表达式的使用
- iOS 单例的滥用和用依赖注入替代
- ios开发技巧之tableView去掉多余的空行分割线 自定义cell分割线
- iOS7上leftBarButtonItem无法实现滑动返回的完美解决方案
- IOS长按事件的方法
- IOS证书:this certificate was signed by an unknown authority
- ios动画效果集锦(持续更新)