UINavigationItem可以理解為Navigation Bar中的內(nèi)容,通過編輯UINavigationItem,我們可以使得在Navigation Bar中顯示想要的東西,比如設(shè)置標(biāo)題、添加按鈕等。
當(dāng)我們使用系統(tǒng)原生控件時(shí),有時(shí)候不能滿足需求,因此需要自定義重寫,最近在項(xiàng)目中需要用導(dǎo)航欄的右側(cè)按鈕,先是直接用系統(tǒng)原生的控件。
代碼如下:
UIButton *settingButton = [UIButton buttonWithType:UIButtonTypeCustom];
[settingButton setFrame:CGRectMake(0.0, 0.0, 44.0, 44.0)];
[settingButton addTarget:self action:@selector(settingButtonOnClicked:) forControlEvents:UIControlEventTouchUpInside];
[settingButton setImage:[UIImage imageNamed:@"ic_main_setting"] forState:UIControlStateNormal];
UIBarButtonItem *rightItem = [[UIBarButtonItem alloc] initWithCustomView:settingButton];
- 效果如圖:
系統(tǒng)原生按鈕位置效果
按鈕右側(cè)與屏幕右側(cè)有20 point的間距,按鈕圖標(biāo)居中顯示,需求來講該按鈕是偏左了。當(dāng)然你可以修改圖標(biāo)的位置也可以。
代碼來修改是不是更靈活?當(dāng)然是了,如果再需求變更也不用重新切圖了。
修改后代碼如下:
UIButton *settingButton = [UIButton buttonWithType:UIButtonTypeCustom];
//修改按鈕向右偏移10 point
[settingButton setFrame:CGRectMake(10.0, 0.0, 44.0, 44.0)];
[settingButton addTarget:self action:@selector(settingButtonOnClicked:) forControlEvents:UIControlEventTouchUpInside];
[settingButton setImage:[UIImage imageNamed:@"ic_main_setting"] forState:UIControlStateNormal];
//修改方法
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(0.0, 0.0, 44.0, 44.0)];
[view addSubview:settingButton];
UIBarButtonItem *rightItem = [[UIBarButtonItem alloc] initWithCustomView:view];
- 效果如圖:

修改后效果圖
- 如果文章對(duì)你有幫助,請(qǐng)點(diǎn)下“喜歡”吧,感謝!
