Navigation Bar 和 Status Bar 的设置

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Navigation Bar 和 Status Bar 的设置相关的知识,希望对你有一定的参考价值。

 

概念:所谓的UINavigationItem就可以理解为Navigation Bar中的内容,通过编辑UINavigationItem, 我们可以使得在Navigation Bar中显示想要的东西,比如设置标题、添加按钮

 

navigationItem和UINaviagationController平级,

1. navigationBar自己有很多属性:比如 barStyle 、背景 backgroundColor 、frame属性(可以获得宽高这些信息)

2. 可以通过setBackgroundImage方法设置背景图片,并使用clipsToBounds裁剪

 

navigationBar的隐藏

这个需要其爸self.navigationController来控制。直接设置navigationBarHidden设置true或false

 

navigationItem的设置

1. 设置title。 self.navigationItem.title = 

2. 设置titleView

3. 设置左右边的按钮 

self.navigationItem.leftBarButtonItem

self.navigationItem.leftBarButtonItems

 

UIStatusBar 

控制StatusBar的显示 

//如果更换了return值,则需要调用 setNeedsStatusBarAppearanceUpdate 方法
    @IBAction func gggg(_ sender: AnyObject) {
        h = !h
    
    }
    
    
    var h  = false
        {
        didSet{
           // setNeedsStatusBarAppearanceUpdate()
            UIView.animate(withDuration: 0.25, animations: {
                self.setNeedsStatusBarAppearanceUpdate()
            })
        }
    }
    

    
    var style:UIStatusBarStyle = UIStatusBarStyle.default
    
    
    override var preferredStatusBarStyle: UIStatusBarStyle   {
        get{
            return style
        }
    }
    
    override var prefersStatusBarHidden: Bool {
        get{
            return h
        }
    }

  

ios 以后 ViewController开始使用全屏布局的,而且默认的行为涉及到edgesForExtendedLayout. 指定边缘要延伸的方向,它的默认值很自然的是 UIRectEdgeAll,从四周边缘均延伸。就是即使视图中上有 navigationBar, 下有tabBar,那么视图仍会延伸覆盖到四周的区域。

OS7及以上版本有改动,UITabBar类添加了一个translucent属性,UINavigationBar类中的translucent属性也默认修改为YES。也就是说默认使用了这两个bar之后,显示的是半透明的效果,能够模糊看到被bar遮盖的东西。这会导致一些问题,比如配色的色差以及我们下面将的xib文件控件位置起点的问题。

以上是关于Navigation Bar 和 Status Bar 的设置的主要内容,如果未能解决你的问题,请参考以下文章

iOS 自定义tab bar 怎么隐藏

iOS第八课——Navigation Controller和Tab bar Controller

5_Navigation Bar

iOS开发 : Navigation Bar的简单设置

I.MX6 7" navigation bar as black bar

android隐藏底部虚拟键Navigation Bar实现全屏