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文件控件位置起点的问题。
全屏:
设置约束为Top Space to: Superview , 而不是Top Layout Guide
topLayoutGuide属性表示不希望被透明的状态栏或导航栏遮挡的内容范围的最高位置。这个属性的值是它的
=======
Navigation Bar 透明的情况,但item还在
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default) self.navigationController?.navigationBar.shadowImage = UIImage() self.navigationController?.navigationBar.isTranslucent = true self.navigationController?.view.backgroundColor = UIColor.clear self.edgesForExtendedLayout = .all
https://www.zhihu.com/question/36659843
如果有navigation bar ,则设置
navigationController.navigationBar.barStyle = .black;
没有,则设置
override var preferredStatusBarStyle: UIStatusBarStyle
{
get{
return UIStatusBarStyle.lightContent
}
}
最后加上
[self setNeedsStatusBarAppearanceUpdate];
posted on 2016-10-22 14:04 Jackyzhong123 阅读(538) 评论(0) 收藏 举报
浙公网安备 33010602011771号