1、UINavigationBar 的相關(guān)屬性設(shè)置:
// 隱藏navigationBar
self.navigationController.navigationBarHidden = YES;
// 設(shè)置navigationBar透明
self.navigationController.navigationBar.subviews[0].alpha = 0;
// 去除navigationBar底部淺灰色的分割線
self.navigationController.navigationBar.subviews[0].subviews[0].alpha = 0;
// 設(shè)置navigationBar顏色
self.navigationController.navigationBar.barTintColor = [UIColor cyanColor];
// 設(shè)置navigationBar背景圖片
[self.navigationController.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];
2棉浸、原理:
UINavigationBar 最終顯示效果是很多層View一起作用的,包括模糊濾鏡的效果。所以只是把 barTintColor 改變或者設(shè)置背景圖片的話搂鲫,底部還是會(huì)有一層淺色分割線,這是它的子視圖導(dǎo)致的磺平。
層級(jí)結(jié)構(gòu)如圖所示:
UINavigationBar層級(jí)結(jié)構(gòu)
- 可以看到背景(UIBarBackground)上有兩個(gè) UIImageView魂仍。
兩個(gè)UIImageView的位置
- 上面那個(gè)大的框是背景圖拐辽,另外一個(gè)就是分割線了
// UIBarBackground視圖:
self.navigationController.navigationBar.subviews[0]
// UIBarBackground上的底部分割線視圖:
self.navigationController.navigationBar.subviews[0].subviews[0]
// UIBarBackground上的背景視圖:
self.navigationController.navigationBar.subviews[0].subviews[1]
navigationBar上的各個(gè)子視圖都拿到了,接下來(lái)就可以進(jìn)行自定義處理了擦酌。