概念:所谓的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文件控件位置起点的问题。