iOS “自定义返回按钮”与“系统侧滑”的组合使用

当我们使用自定义button进行popViewController,并将系统NavigationBar隐藏时,

(self.navigationController.navigationBarHidden = YES;)

NavigationBar的系统自带的侧滑手势便不存在了。

当然我们可以在当期视图上加滑动手势,但是容易出现bug,特别是视图中存在scrollview、tableview等视图。

下面看一种比较巧妙的方法,将 自定义backBtn 与 系统侧滑 组合到一起:

- (void)viewWillAppear:(BOOL)animated {
    [super viewWillAppear:animated];
    self.navigationController.navigationBar.alpha = 0;  

    //    self.navigationController.navigationBarHidden = YES;
}  

- (void)viewWillDisappear:(BOOL)animated {
    [super viewWillDisappear:animated];
    self.navigationController.navigationBar.alpha = 1;  

    //    self.navigationController.navigationBarHidden = NO;
} 

可以看到,并没有将NavigationBar隐藏掉,而是透明度调成0,透明度为0时NavigationBar将不占据位置,

但侧滑功能仍在。过程中发现,侧滑一半时会显现出系统NavigationBar的backBtn及标题,

于是,可以这两项设为nil。注意:这些对NavigationBar的设置都是全局生效的,

要注意在视图生命周期的不同阶段做好相应处理。

总结,当我们想要不使用系统NavigationBar的视图,而仅仅使用它的侧滑手势时,

要灵活利用视图生命周期,对

self.navigationController.navigationBar.alpha = 0;
self.navigationController.navigationBar.alpha = 1; 

进行适时地切换,系统NavigationBar的backItem等成员也许适时隐藏。

时间: 2024-07-30 06:02:26

iOS “自定义返回按钮”与“系统侧滑”的组合使用的相关文章

iOS 自定义返回按钮,保留系统滑动返回

原文链接 自定义返回按钮保留系统滑动返回手势.gif 1.简介 使用苹果手机,最喜欢的就是用它的滑动返回.作为一个开发者,我们在编写很多页面的时候,总是会因为这样那样的原因使得系统的滑动返回不可用.使用导航栏push出一个控制器,我们在控制器中自定义了一个返回按钮.这样系统默认的滑动返回手势效果就没有了. 2.解决方法 [1]从A这个控制器push到B这个控制器,我们想要自定义B的返回按钮,我们可以在A中设置 self.navigationItem.backBarButtonItem = [[U

解决iOS7自定义返回按钮后不能侧滑返回的问题

iOS7自带侧滑返回功能,但是自定义返回按钮之后,侧滑返回功能会失效,解决办法如下: 自定义一个UINavigationController,实现几个代理方法 @interface CustomNavigationController : UINavigationController @end #import "CustomNavigationController.h" @interface CustomNavigationController ()<UINavigationCo

navigation 自定义返回按钮手势返回实效解决

在自定义返回按钮的时候,侧滑手势返回往往默认失效了,怎么让侧滑有效呢 UIButton  *btn =[UIButton buttonWithType:UIButtonTypeCustom]; [btn setTitle:@"返回" forState:UIControlStateNormal]; [btn addTarget:self action:@selector(back) forControlEvents:UIControlEventTouchUpInside]; btn.fr

自定义返回按钮后的滑动手势

自定义返回按钮是开发工作中很常见的需求,只需要一行代码就可以搞定: self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:@"back"] style:(UIBarButtonItemStyleDone) target:self action:@selector(backClick)]; 然后实现这个监听方法: - (void)backClick

在UINavigationController自定义返回按钮后实现手势右滑到上一级界面(interactivePopGestureRecognizer)

在iOS7中,新增加了一个小小的功能,也就是这个self.navigationController.interactivePopGestureRecognizer. 1.情景概况: 在UINavigationController自定义返回按钮后无法实现手势右滑到上一级界面. 2.解决方案: self.navigationController.interactivePopGestureRecognizer.delegate 默认是<_UINavigationInteractiveTransitio

iOS7+自定义返回按钮

本来我是用创建UIButton赋值给self.navigationItem.leftBarButtonItem的方式设置返回按钮的,用了觉得挺正常,结果看了@蛙牛的文章<Java转iOS-第一个项目总结(2)>后,发现一个重大问题:手势返回功能没了,原因就是用设置leftBarButtonItem的方式来自定义返回按钮会导致手势返回功能失效. 如果不自定义返回按钮,又因为我使用的是RDVTabBarController,需要在返回方法里手动设置hide tabbar属性,这样我就需要拦截返回手

iOS手势(滑动)返回的实现(自定义返回按钮)

如果各位使用的是storyboard布局的话,且用的是系统的返回按钮,那么是自动会有滑动返回效果的,但是相信各位做项目的,一般都是用的自定义的返回按钮,所以我贴几行代码,看看怎么实现系统自带的滑动返回的.首先,建立一个自定义的返回按钮,然后加上去 [self.navigationItem setLeftBarButtonItem:backBarItem]; 然后 - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear

IOS让返回按钮显示自定义标题而不是上个ViewController的title

在开发IOS的时候发现当从一个ViewController跳转到另一个ViewController时,被跳转到的那个ViewController的返回按钮总是显示的是上个ViewController的title.如果上个ViewController的title内容比较多的话会显得界面比较乱,所以我想要实现的是返回按钮只显示“Back”. 开发环境: IOS:10 Xcode:8 返回按钮的显示逻辑 想要知道怎么实现自己想要的功能首先要掌握相关的理论知识,下面举个例子说明. 假如从ViewCont

自定义返回按钮

iOS如何把导航默认的返回按钮设置成“返回” 自定义iOS7导航栏背景,标题和返回按钮文字颜色 ios4及ios5下自定义NavigationBar的返回按钮 iOS 5自定义控件