【问题标题】:Change iOS7 Status Bar Colour programmatically, mid-run?在运行中以编程方式更改 iOS7 状态栏颜色?
【发布时间】:2014-03-16 15:31:28
【问题描述】:

我正在尝试在运行中更改状态栏颜色,即不是在加载控制器时。我更改了视图的背景颜色,因此我需要将其从黑色更改为白色,反之亦然。

我知道我可以使用preferredStatusBarStyle 和 plist 中的设置来更改它,但据我所知,这只会在第一次启动视图控制器时设置它。例如,当我按下按钮时,我想更改它。

我可以这样做吗?

【问题讨论】:

    标签: objective-c ios7 statusbar


    【解决方案1】:
    • 转到您的应用程序 Plist 并将其添加为新行并将其设置为 NO。

      View controller-based status bar appearance  NO
      

    添加一个布尔值来确定UIStatusBar 颜色的状态并添加一个切换方法

    @property(nonatomic) BOOL black;
    
    
    -(void)toggleStatuSBar:(id)sender{
    
        if(black) {
            [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent animated:YES];
            black = NO;
    
        }else {
            [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault animated:YES];
            black = YES;
        }
    }
    

    这是一个示例截图

    • 菜单关闭时,颜色为白色。

    • 菜单打开时颜色为黑色

    希望对您有所帮助。

    【讨论】:

    • 这样你就可以独立改变viewController的StatusBar了。
    • 这在 iOS 9 中已被弃用。现在重写 UIViewController 方法是唯一的方法吗?这并不理想。
    • @Arcrammer :我在一年多前回复了原始帖子,当时 API 运行良好。最好编辑答案并添加新的 api 代码。
    【解决方案2】:

    从 Swift 3 开始:

    1. 转到您的应用程序 Plist 并将其添加为新行并将其设置为 NO。

    View controller-based status bar appearance NO

    2.

    白:UIApplication.shared.statusBarStyle = .lightContent

    黑色:UIApplication.shared.statusBarStyle = .default

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-12
      • 1970-01-01
      • 2019-05-29
      相关资源
      最近更新 更多