很多情况下的设计使得我们不能使用系统导航栏自带的返回按钮样式,而我们又不想自定义导航栏,这要怎么办呢?网上给的很多办法都是自定义导航栏的leftBarButtonItem,当然这可以解决这个问题,今天我要说的是另外一种方法,网上也有介绍,首先我们看一下系统的效果:
系统自带样式
然后给出另外一种方法(注:图片必须为可拉伸图片)
UIImage *backButtonImage = [[UIImage imageNamed:@"back"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 25, 0, 0)];
[[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButtonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(NSIntegerMin, NSIntegerMin) forBarMetrics:UIBarMetricsDefault];
很好理解,选择我们要使用的图片替换返回按钮的图片,然后使返回按钮的标题不显示(注:此处在有的机型可能会出现问题,不建议使用此方法,建议写一个UINavigationController的类别处理返回按钮的标题,下面附上方法)。
- (BOOL)navigationBar:(UINavigationBar *)navigationBar shouldPushItem:(UINavigationItem *)item{
UIBarButtonItem *back = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil];
item.backBarButtonItem = back;
return YES;
}
最后我们看一下效果:
替换后样式
网友评论
UIBarButtonItem *back = [[UIBarButtonItem alloc] initWithTitle:@"" style:UIBarButtonItemStylePlain target:nil action:nil];
item.backBarButtonItem = back;
可以完美解决(1)返回按钮消失 (2)部分界面标题重现的问题
[[UIBarButtonItem appearance] setTitleTextAttributes:backButtonTextAttributes forState:UIControlStateNormal];
[[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];
[[UIBarButtonItem appearance] setTitleTextAttributes:backButtonTextAttributes forState:UIControlStateNormal];
[[UIBarButtonItem appearance]setBackButtonTitlePositionAdjustment:UIOffsetMake(0, -60) forBarMetrics:UIBarMetricsDefault];