iOS7+自定义返回按钮

本来我是用创建UIButton赋值给self.navigationItem.leftBarButtonItem的方式设置返回按钮的,用了觉得挺正常,结果看了@蛙牛的文章《Java转iOS-第一个项目总结(2)》后,发现一个重大问题:手势返回功能没了,原因就是用设置leftBarButtonItem的方式来自定义返回按钮会导致手势返回功能失效。

如果不自定义返回按钮,又因为我使用的是RDVTabBarController,需要在返回方法里手动设置hide tabbar属性,这样我就需要拦截返回手势的触发方法,想起来头都大了。

摸索了半天,找到了一个简单自定义返回按钮并且保留手势返回功能的方法,优化一下hide tabbar的方式就可以不用拦截了。在BaseViewController中定义一个isShowTabBar,默认为NO,在一级页面的init或者initWithNibName方法中设置isShowTabBar=YES,其它的ViewController不用动,BaseViewController重写下面的方法:

- (void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    if (self.rdv_tabBarController.isTabBarHidden == isShowTabbar) {
        [self.rdv_tabBarController setTabBarHidden:!isShowTabbar];
    }
}

自定义不带文字的返回按钮代码如下:(代码来自于自定义iOS7导航栏背景,标题和返回按钮文字颜色

//自定义返回按钮  
UIImage *backButtonImage = [[UIImage imageNamed:@"fanhui.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 30, 0, 0)];  
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButtonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];  
//将返回按钮的文字position设置不在屏幕上显示  
[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(NSIntegerMin, NSIntegerMin) forBarMetrics:UIBarMetricsDefault];

显示效果如下:

时间: 2024-11-07 00:30:12

iOS7+自定义返回按钮的相关文章

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

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

ios7自定义返回按钮后,右滑返回功能失效解决方法

-(void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; //开启ios右滑返回 if ([self.navigationController respondsToSelector:@selector(interactivePopGestureRecognizer)]) { self.navigationController.interactivePopGestureRecognizer.delegate = n

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

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

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

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

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

自定义返回按钮

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

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

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

iOS_自定义返回按钮

//在-(void)viewWillAppear:(BOOL)animated方法中添加返回按钮 //返回按钮 UIButton *leftButton = [UIButton buttonWithType:UIButtonTypeCustom]; leftButton.frame=CGRectMake(0, 0, 60, 25); [leftButton setImage:[UIImage imageNamed:@"back_img"] forState:UIControlState