NavigationBar 导航栏构成

系统导航栏:系统导航栏 在一个NavigationController下共用一个导航栏,对其作出修改是全局修改

NaviBar 构造
 |- navigationBar
    |- _UIBarBackground
    navigationBar上第一个view  size比navigationBar 高一个statusBar 刘海屏幕高44 普通高20 y坐标 frame.origin.y (-44/-20)
        |-UIImageView
        分割线
        |-UIVisualEffectView
        模糊层 navigationController.navigationBar.translucent 半透明效果
        self.navigationController.navigationBar.translucent = NO; 该控件不存在
        self.navigationController.navigationBar.translucent = YES; 默认translucent为YES 该控件存在
            |-_UIVisualEffectBackdropView
            |-_UIVisualEffectFilterView
 
    |- UINavigationItemView
    没有设置navigation title 就没有该控件
        |-UILabel
        label用来展示navigation title
 
    |- UINavigationItemButtonView
        |- UILabel
    系统默认的字样 上个界面没有设置navigation title 展示的字是"返回"。设置了title 返回的是上个界面的navigation title
    
  |- _UINavigationBarBackIndicatorView
    系统默认的 返回箭头
上面View 均为懒加载 , 而且 除了UINavigationItemView(设置navigation title)的控件为不同的viewController 创建不同的控件,其他view共用,不会重新创建。

设置leftBarButtonItem leftBarButtonItem会替代UINavigationItemButtonView
设置titleView titleView 替代 UINavigationItemView

经常使用的方法

	self.navigationController.navigationBar.barTintColor = [UIColor redColor];
	//修改导航栏背景颜色, 根据self.navigationController.navigationBar.translucent来修改 
	//如果 translucent false修改_UIBarBackground背景颜色 
	//如果 translucent true 修改_UIVisualEffectFilterView背景颜色 
	
    self.navigationController.navigationBar.tintColor = [UIColor greenColor];
    // 修改 UINavigationItemButtonView上title颜色 和 _UINavigationBarBackIndicatorView 返回箭头的颜色
    
    self.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName : [UIColor blackColor]};
    //修改 UINavigationItemButtonView 上title颜色
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值