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

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值