[iOS]关于横屏后状态栏不显示的问题

来源:互联网 发布:js购物车思路 编辑:程序博客网 时间:2024/06/08 17:01

在做一个页面强制横屏的操作后,发现状态栏不显示了,这是因为iOS系统(好像是iOS8之后)在视图横屏的时候默认把状态栏隐藏掉了,之后查了一些方法,总结如下:

1.在info.plist文件中,添加View controller-based status bar appearance,属性为bool,设为NO;

2.在需要显示的ViewController中设置[[UIApplication sharedApplication] setStatusBarHidden:NO withAnimation:UIStatusBarAnimationNone]; 

3.在需要隐藏的ViewController中设置[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationNone];

上面的隐藏/显示状态栏的方法,在iOS9之后被弃用了,采用如下的方法进行设置:

//设置样式- (UIStatusBarStyle)preferredStatusBarStyle {    return UIStatusBarStyleLightContent;}//设置是否隐藏- (BOOL)prefersStatusBarHidden {//    [super prefersStatusBarHidden];    return NO;}//设置隐藏动画- (UIStatusBarAnimation)preferredStatusBarUpdateAnimation {    return UIStatusBarAnimationNone;}

以上三个方法,只需要在需要设置的viewController重写即可!

但是需要注意的是,使用这个"新"的方法进行设置的时候,需要将View controller-based status bar appearance设置为YES,才会有效果,

这样在进行iOS系统适配的时候,就很纠结了,不过庆幸的是,新方法在iOS7的时候就已经支持了:

- (UIStatusBarStyle)preferredStatusBarStyle NS_AVAILABLE_IOS(7_0) __TVOS_PROHIBITED; // Defaults to UIStatusBarStyleDefault- (BOOL)prefersStatusBarHidden NS_AVAILABLE_IOS(7_0) __TVOS_PROHIBITED; // Defaults to NO// Override to return the type of animation that should be used for status bar changes for this view controller. This currently only affects changes to prefersStatusBarHidden.- (UIStatusBarAnimation)preferredStatusBarUpdateAnimation NS_AVAILABLE_IOS(7_0) __TVOS_PROHIBITED;


0 1
原创粉丝点击