美文网首页
状态栏的颜色及可见性

状态栏的颜色及可见性

作者: c048e8b8e3d7 | 来源:发表于2016-07-19 16:23 被阅读20次

有两种方法可以控制状态栏的颜色及可见性

一 使用UIApplication相关方法

  1. 前提: 需要在Info.plist文件中设置 View controller-based status bar appearanceNO.
  2. 注意:IOS9已经把这个方法声明为废弃方法了.
  3. 代码如下
- (IBAction)changeColor:(UISegmentedControl *)sender {
    if (sender.selectedSegmentIndex == 0) {
        [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault animated:YES];
    } else {
        [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:YES];
    }
}

- (IBAction)setHiddenStatus:(UISegmentedControl *)sender {
    if (sender.selectedSegmentIndex == 0) {
        [[UIApplication sharedApplication] setStatusBarHidden:NO animated:YES];
    } else {
        [[UIApplication sharedApplication] setStatusBarHidden:YES animated:YES];
    }
}

二 使用UIViewController相关方法

  1. 前提:需要在Info.plist文件中设置 View controller-based status bar appearanceYES. 或者去掉这个键值对,默认为YES.
  2. 代码如下
- (IBAction)changeColor:(UISegmentedControl *)sender {
    [self setNeedsStatusBarAppearanceUpdate];
}

- (IBAction)setHiddenStatus:(UISegmentedControl *)sender {
    [self setNeedsStatusBarAppearanceUpdate];
}

#pragma mark - UIViewController 相关方法

- (UIStatusBarStyle)preferredStatusBarStyle
{
    if (self.colorSegmentControl.selectedSegmentIndex == 0) {
        return UIStatusBarStyleDefault;
    }
    return UIStatusBarStyleLightContent;
}

- (BOOL)prefersStatusBarHidden
{
    if (self.hiddenSegmentControl.selectedSegmentIndex == 0) {
        return NO;
    }
    return YES;
}

//状态栏隐藏或显示的动画
- (UIStatusBarAnimation)preferredStatusBarUpdateAnimation
{
    return UIStatusBarAnimationFade;
}

相关文章

网友评论

      本文标题:状态栏的颜色及可见性

      本文链接:https://www.haomeiwen.com/subject/idgmjttx.html