在同一视图控制器内以编程方式更改状态栏文本颜色

doo*_*man 3 ios xamarin

我在 iOS 9 上使用 UIScrollView 有两个页面,对于第一页,我希望状态栏文本为黑色,第二页为白色。因此,当我滑动到第二页时,如果我滑动到第一页,我希望状态栏颜色变为白色和黑色。

我尝试在 plist 文件中将 UIViewControllerBasedStatusBarAppearance 设置为 false ,然后以编程方式调用:

UIApplication.SharedApplication.StatusBarStyle = UIStatusBarStyle.BlackTranslucent;
SetNeedsStatusBarAppearanceUpdate();
Run Code Online (Sandbox Code Playgroud)

但不幸的是,状态栏文本显示为白色,即使在调用 UIApplication.SharedApplication.StatusBarStyle = UIStatusBarStyle.BlackTranslucent; 时也保持白色。

知道如何在同一个视图控制器中手动更改状态栏文本颜色吗?

Der*_*erp 5

如果您为视图控制器使用导航控制器,请尝试更改属性:

NavigationController.NavigationBar.BarStyle
Run Code Online (Sandbox Code Playgroud)

“默认”应该是黑色,“LightContent”应该是白色。我相信黑色选项已被弃用。

否则,您可以在 Info.plist 中选择基于视图控制器的状态栏样式,并使用这里提到的preferredStatusBarStyle 属性

在您的 ViewDidLoad 方法中,执行 SetNeedsStatusBarAppearanceUpdate();

添加以下方法:

 public override UIStatusBarStyle PreferredStatusBarStyle()
 {
        return UIStatusBarStyle.LightContent; //Or Default/Black/etc.
 }
Run Code Online (Sandbox Code Playgroud)

注意:UIApplication.SharedApplication用于更改状态栏样式在 iOS 9 中已被弃用。请改用上述方法。希望这有帮助。干杯!