【问题标题】:change the Status Bar style on button click更改按钮单击时的状态栏样式
【发布时间】:2015-12-21 02:42:50
【问题描述】:

我想为用户添加将系统状态栏样式从Light 更改为Dark 的功能。

在应用启动时,样式为Light

我在按钮点击时添加了以下代码:

//on button click
[self setNeedsStatusBarAppearanceUpdate];

- (UIStatusBarStyle)preferredStatusBarStyle
{
    if(darkMode) {
        return UIStatusBarStyleDefault;
    } else {
        return UIStatusBarStyleLightContent;
    }
}

但是prefferredStatusBarStyle 方法永远不会被调用,状态栏也不会发生变化。

【问题讨论】:

  • 我已经看到了。似乎不适用于我想更改按钮单击状态栏的情况
  • 我的错……我在info.plist 中将以下设置为 NO。问题已修复View controller-based status bar appearance

标签: objective-c ios9 uistatusbar


【解决方案1】:

斯威夫特 3

设置点击按钮时需要更新状态栏。这样 'preferredStatusBarStyle' 将被调用。

setNeedsStatusBarAppearanceUpdate()

【讨论】:

    【解决方案2】:
    #import "ViewController.h"
    
    @interface ViewController ()
    {
        int click;
    }   
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
    } 
    - (IBAction)ButtonClick:(UIButton *)sender
    {
            sender.selected=!sender.selected;
            if (sender.isSelected)
            {
                click=1;
            }
            else
            {
                click=0;
            }
            [self setNeedsStatusBarAppearanceUpdate];
    }
    - (UIStatusBarStyle)preferredStatusBarStyle
    {
           if(click)
            {
                return UIStatusBarStyleDefault;
            } else
            {
                return UIStatusBarStyleLightContent;
            }
     }
    }
    @end
    

    【讨论】:

      猜你喜欢
      • 2014-03-06
      • 1970-01-01
      • 2013-04-17
      • 2019-02-04
      • 2016-07-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多