關於UINavigationController — navigationBar

navigationBar的navigationItem的左右側按鈕距兩邊的距離爲16,有時我們需要對按鈕的位置做一些修改。


1.navigationItemUIBarButtonItem的偏移

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




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章