iOS7+自定义返回按钮

本文介绍了如何在iOS应用中使用BaseViewController优化hidetabbar方式来自定义不带文字的返回按钮,并保留手势返回功能,避免了使用leftBarButtonItem导致的手势返回失效问题。

本来我是用创建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];

显示效果如下:

162420_5TYP_1443646.jpg



转载于:https://my.oschina.net/ioslighter/blog/405118

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值