在iOS开发的过程中,经常会设置状态栏的样式,所以下面这篇文章主要介绍状态栏在iOS中基本使用的相关信息。通过示例代码非常详细的介绍,有需要的朋友可以参考一下。
: 目录
1.状态栏和导航栏2。设置状态栏显示和字体样式4。隐藏启动页面上的状态栏5。与状态栏和导航栏相关的常见宏定义
一、状态栏与导航栏
状态栏:显示时间和电池等信息。
导航栏:显示app页面标题,后退按钮等。
iOS7之前:状态栏和导航栏是分开的;
iOS7之后:状态栏和导航栏合二为一;总导航高度(64)=状态栏高度(20)导航栏内容高度(44)
iPhoneX设备出现后,状态栏高度变为44,导航栏总高度(88)=状态栏(44)和导航栏(44)的内容高度。
二、设置状态栏显隐与字体样式
IOS状态栏可以显示和隐藏,文本的颜色也可以设置。通过将info.plist中基于viewcontroller的状态栏外观属性修改为否或是,状态栏的设置可以分为全局控制和局部控制。
全局控制:通过info.plist设置,或者调用全局方法。
分页控件:通过prefersStatusBarHidden方法在视图控制器中设置。
1.全局控制
默认情况下或手动情况下,基于视图控制器的状态栏外观设置为“否”。在这种情况下,状态栏需要全局设置,有两种设置方式。
1:依次进入目标-常规-部署信息,然后可以进行如下设置:
方法2:代码设置
//1.将状态栏设置为隐藏(是)或显示(否)
[[ui application shared application]setStatusBarHidden:NO];
//2.设置状态栏的字体颜色
//UIStatusBarStyleDefault,black(默认值)
///UIStatusBarStyleLightContent,白色
[[ui application shared application]setStatusBarStyle:UIStatusBarStyleDefault];
注意:
用代码控制全局状态栏,代码的位置很重要;在AppDelegate中编写,设置整个App页面的状态栏样式;如果需要单独设置一个页面的隐藏状态栏,需要在进入页面时设置隐藏状态栏,在退出页面时设置显示,确保不会影响其他页面的状态栏样式。
2.分页设置
在info.plist中将基于viewcontroller的状态栏外观属性设置为YES,状态栏默认以黑色字体显示。此时全局设置操作无效,需要分页设置修改其样式,即在每个视图控制器或控制器基类中使用以下代码:
-(UIStatusBarStyle)preferred statusbarstyle
{
返回UIStatusBarStyleLightContent//返回白色
//返回UIStatusBarStyleDefault//返回黑色
}
- (BOOL)首选StatusBarHidden {
返回YES//将状态栏设置为隐藏
//返回否;//设置状态栏显示
}
但是,这里有一个问题:如果当前视图控制器是UINavigationController的子视图控制器,则不会调用preferredStatusBarStyle。这是因为导航控制器中的preferredStatusBarStyle能够修改状态栏的样式。有两种方法可以解决这个问题:
1:添加一个子类导航控制器。
我们需要使用一个自定义的子类导航控制器,并向其添加以下代码:
-(UIStatusBarStyle)preferred statusbarstyle {
UIViewController * top VC=self . topviewcontroller;
return[top VC preferredStatusBarStyle];
}
方法二:放弃preferredStatusBarStyle
我们可以通过在当前视图控制器中直接调用以下方法来修改状态栏,而无需使用preferredStatusBarStyle方法。
//状态栏和导航栏的背景色为白色,状态栏的文字为黑色。
self . navigation controller . navigation bar . bar style=UIBarStyleDefault;
//状态栏和导航栏的背景色为黑色,状态栏的文字为白色。
self . navigation controller . navigation bar . bar style=UIBarStyleBlack;
三、设置状态栏背景色
iOS7之后,状态栏和导航栏合并在一起,所以默认情况下,状态栏会随着导航栏的背景色而变化。所以我们可以通过改变导航栏来改变状态栏的背景颜色:
//将状态栏和导航栏设置为不透明。
self . navigation controller . navigation bar . translucent=NO;
//将状态栏和导航栏的背景色设置为橙色。
[self . navigation controller . navigation bar setbartincolor:[ui color orange color]];
当然,我们也可以单独设置状态栏的背景颜色。示例代码如下:
ui view * status bar=[[ui application shared application]valueForKey:@ status bar window "]
valueForKey:@ status bar ];
if([status bar respondsToSelector:@ selector(set background color:)){
status bar . background color=[ui color green color];
}
注意:
如果单独设置页面状态栏的背景色,还是需要在离开页面的时候恢复原样。四、启动页隐藏状态栏
如果不需要在启动页面上显示状态栏信息,可以将其设置为隐藏。设置方法仍然是修改info.plist你只需要设置状态栏初始隐藏即可。设置为YES后,启动页面将暂时不显示状态栏。操作如下所示:
五、状态栏、导航栏相关的常用宏定义
#pragma标记-设备参数
//屏幕宽度
# define ZS _屏幕宽度[[UIScreen主屏]边界].size.width
//屏幕高度
#定义ZS _屏幕高度[[UIScreen主屏]边界].size.height
//确定设备类型是否为iPhoneX
#定义ZS _ ISIphoneX(ZS _屏幕宽度==375 . f ZS _屏幕高度==812.f?是:否)
//导航栏高度
#定义ZS_NavBarHeight (ZS_ISIphoneX?88华氏度:64华氏度)
//状态栏高度
#定义ZS _ status bareight(ZS _ ISIphoneX?44华氏度:20华氏度)
//导航栏内容高度
#定义ZS_NavBarContentHeight 44.0
//标签栏的高度
#定义ZS_TabBarHeight (ZS_ISIphoneX?49层34层:49层)
相关文章:
IOS导航栏的使用
总结
这就是本文的全部内容。希望这篇文章的内容对你的学习或工作有一定的参考价值。有问题可以留言交流。谢谢你的支持。