iOS UINavigationBar层级和设置透明方法

释放双眼,带上耳机,听听看~!
1、UINavigationBar 的相关属性设置:

// 隐藏navigationBar
self.navigationController.navigationBarHidden = YES;
// 设置navigationBar透明
self.navigationController.navigationBar.subviews[0].alpha = 0;
// 去除navigationBar底部浅灰色的分割线
self.navigationController.navigationBar.subviews[0].subviews[0].alpha = 0;
// 设置navigationBar颜色
self.navigationController.navigationBar.barTintColor = [UIColor cyanColor];
// 设置navigationBar背景图片
[self.navigationController.navigationBar setBackgroundImage:image forBarMetrics:UIBarMetricsDefault];
2、原理:

UINavigationBar 最终显示效果是很多层View一起作用的,包括模糊滤镜的效果。所以只是把 barTintColor 改变或者设置背景图片的话,底部还是会有一层浅色分割线,这是它的子视图导致的。

层级结构如图所示:

 

UINavigationBar层级结构
  • 可以看到背景(UIBarBackground)上有两个 UIImageView。
两个UIImageView的位置
  • 上面那个大的框是背景图,另外一个就是分割线了
// UIBarBackground视图:
self.navigationController.navigationBar.subviews[0]
// UIBarBackground上的底部分割线视图:
self.navigationController.navigationBar.subviews[0].subviews[0]
// UIBarBackground上的背景视图:
self.navigationController.navigationBar.subviews[0].subviews[1]

navigationBar上的各个子视图都拿到了,接下来就可以进行自定义处理了。

参考链接:UINavgationBar全透明一行代码实现/ 任意颜色

人已赞赏
iOS文章

iOS开发中的手势操作详细介绍

2019-12-30 11:28:22

iOS文章

iOS开发PushKit推送

2019-12-30 12:06:45

个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
有新消息 消息中心
搜索