獲取UINavigationBar對象
在開發中我們的項目大部分頁面的導航欄風格是一致的,所以我們在設置nav樣式的時候基本都會采用全局設置的方式來達到目的。那么怎么獲取到這個全局對象呢?來看下面的代碼:
UINavigationBar *bar = [UINavigationBar appearance];
一行代碼就拿到了想要的對象,下面就可以對它進行各種你想要的設置了。
修改導航欄背景色(圖片)
//設置背景顏色
[bar setBarTintColor:[UIColor whiteColor]];
bar.translucent = NO;//如果你不需要系統自動的半透明效果就加上這行代碼就可以達到想要的效果了
//設置背景圖片
[navBar setBackgroundImage:[UIImage imageNamed:@"imageName"] forBarMetrics:UIBarMetricsDefault];
導航欄標題的設置
//設置導航欄標題的樣式,參數為一個富文本屬性字典
[bar setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor whiteColor],NSFontAttributeName:[UIFont systemFontOfSize:16]}];
//你可以根據自己的需求來設置下面這些屬性
//系統提供的所有富文本屬性
NSFontAttributeName // 設置字體
NSParagraphStyleAttributeName // 設置段落風格
NSForegroundColorAttributeName // 設置文字顏色
NSBackgroundColorAttributeName // 設置背景顏色
NSLigatureAttributeName // 設置連體屬性
NSKernAttributeName // 設置字符間距
NSStrikethroughStyleAttributeName // 添加刪除線
NSUnderlineStyleAttributeName // 添加下劃線
NSStrokeColorAttributeName // 設置文字描邊顏色
NSStrokeWidthAttributeName // 設置文字描邊寬度
NSShadowAttributeName // 設置陰影
NSTextEffectAttributeName // 設置文本特殊效果
NSAttachmentAttributeName // 設置文本附件
NSLinkAttributeName // 設置鏈接屬性
NSBaselineOffsetAttributeName // 設置基線偏移量
NSUnderlineColorAttributeName // 添加下劃線顏色
NSStrikethroughColorAttributeName // 添加刪除線顏色
NSObliquenessAttributeName // 設置字體傾斜
NSExpansionAttributeName // 設置文本扁平
NSWritingDirectionAttributeName // 設置文字書寫方向
NSVerticalGlyphFormAttributeName // 設置文本段落排版格式
導航欄底部自帶線條的去除
//方法1:實例一個圖片對象將系統的圖片對象覆蓋掉
[bar setBackgroundImage:[[UIImage alloc] init] forBarMetrics:UIBarMetricsDefault];
[bar setShadowImage:[[UIImage alloc] init]];
//方法2:將clipsToBounds屬性設置為YES裁剪掉陰影部分
bar.clipsToBounds = YES;
導航欄返回按鈕的設置
//修改返回圖片顏色
[bar setTintColor:[UIColor whiteColor]];//這里注意要把tintColor和barTintColor兩個屬性區分開
//去掉文字僅顯示返回圖標
//由于設置的是navBar上的一個item的屬性所以無法通過appearance來獲取對象所以需要換一種方式來達到全局設置的目的
//一般我用會采用抽取父類或者為系統nav類添加分類,然后重寫系統push方法的方式來修改。如下:
- (void)pushViewController:(UIViewController *)viewController animated:(BOOL)animated {
viewController.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc ]initWithTitle:@"" style:UIBarButtonItemStyleDone target:nil action:nil];
[super pushViewController:viewController animated:animated];
}
最后加餐UIBarButtonItem的自定制以及位置調整
相信大家也經常使用下面這個方法:
UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithCustomView:view];
這里我就不多說什么了,想要什么樣的視圖自己做出來就好了,我就主要分享下位置調整的方法。
UIBarButtonItem *space = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil];
space.width = -15;
self.navigationItem.rightBarButtonItems = @[space,item];
實例一個占位item通過調整該item的寬度來設置其它item的位置。(leftBarButton也可以這樣做)
最近公司新啟了一個項目,我也是剛剛又做了一遍這些設置。然后就想趁這個機會把項目中一些常用的功能總結總結,來和大家分享一下。希望能幫到大家~