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];