ios7导航栏返回按钮的一些问题总结

来源:互联网 发布:linux zip压缩文件夹 编辑:程序博客网 时间:2024/06/02 01:13

iOS 7中在传统的左上角返回键之外,提供了右滑返回上一级界面的手势。

也就是说,我可以不仅仅通过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 



0 0
原创粉丝点击