navigationBar的navigationItem的左右侧按钮距两边的距离为16,有时我们需要对按钮的位置做一些修改。
1.navigationItem的UIBarButtonItem的偏移
UIButton *leftBtn = [UIButton buttonWithType:UIButtonTypeSystem];
leftBtn.frame = CGRectMake(0, 0, 65, 26);
[leftBtn setImage:[UIImage imageNamed:@"fanhui_btn_normal.png"] forState:UIControlStateNormal];
[leftBtn setTitle:@"返回" forState:UIControlStateNormal];
leftBtn.titleLabel.font = [UIFont systemFontOfSize:17];
[leftBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[leftBtn addTarget:self action:@selector(checkAction) forControlEvents:UIControlEventTouchUpInside];
UIBarButtonItem *negativeSpacer = [[UIBarButtonItem alloc]initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
negativeSpacer.width = -18;
UIBarButtonItem *leftButton = [[UIBarButtonItem alloc]initWithCustomView:leftBtn];
self.navigationItem.leftBarButtonItems = [NSArray arrayWithObjects:negativeSpacer,leftButton, nil];
还有一种方法,设置navigationItem的contentEdgeInsets属性
leftBtn.contentEdgeInsets = UIEdgeInsetsMake(0, -16, 0, 0); // 分别为上左下右
self.navigationItem.leftBarButtonItem = leftButton;
2、navigationBar的滑动动画
一般的写法,只能做到隐藏navigationBar
[self.navigationController setNavigationBarHidden:YES];
要想隐藏navigationBar的同时带动画效果,就需要下面这种
[self.navigationController setNavigationBarHidden:NO animated:NO];
self.navigationController.navigationBar.hidden = YES;
[self.navigationController setNavigationBarHidden:YES animated:YES];