您的位置:首页 > 移动开发 > IOS开发

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

2016-03-16 15:28 615 查看
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



内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: