关于导航返回按钮
2017-05-25 本文已影响60人
心底碎片
一般而言,app的返回按钮都是一致的,所以可以在AppDelegate中做统一的样式,
代码如下:
//修改返回按钮样式
[[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(0, -60) forBarMetrics:UIBarMetricsDefault];
[[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];
//状态栏颜色
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;
这样的话,返回按钮的事件就是返回到上一级页面,但是有时候会遇到,需要返回到指定页面,这样的话,就需要自定义返回按钮,问题又出现了,返回按钮跟左侧边距和统一的返回按钮不一致。我也试试了很多种,才找到方法。
就是定义两个按钮,左边的按钮用来控制左边距,右边的才是真正看到的按钮。
代码如下:
self.navigationItem.hidesBackButton = YES;
UIButton *backBtn = [UIButton buttonWithType:UIButtonTypeCustom];
[backBtn setBackgroundImage:[UIImage imageNamed:@"back.png"] forState:UIControlStateNormal];
[backBtn addTarget:self action:@selector(Go2Click) forControlEvents:UIControlEventTouchUpInside];
backBtn.frame = CGRectMake(0, 0, 22, 33);
UIBarButtonItem *item = [[UIBarButtonItem alloc]initWithCustomView:backBtn];
UIBarButtonItem *nagetiveSpacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
//自己根据需要设置
nagetiveSpacer.width = -10;
//两个返回按钮,一个用来控制左边距
self.navigationItem.leftBarButtonItems = @[nagetiveSpacer, item];
end