Xamarin表示iOS状态栏文本颜色

时间:2017-05-29 14:36:23

标签: ios xamarin xamarin.ios xamarin.forms

我无法将我的Xamarin Forms iOS应用的状态栏文字颜色更改为白色。我在info.plist中进行了更改,如下所示:

<key>UIStatusBarStyle</key>
<string>UIStatusBarStyleLightContent</string>
<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>

然而,颜色仍然是黑色..有没有其他方法可以更改状态栏文字颜色?

4 个答案:

答案 0 :(得分:22)

在Xamarin.Forms中,要在iOS状态栏中实现白色文本,您需要做三件事。我还在下面发布了一个示例Xamarin.Forms应用程序,该应用程序在iOS状态栏中使用白色文本。

1。更新Info.plist

Info.plist中,添加布尔属性View controller-based status bar appearance并将其值设置为No

enter image description here

2。使用NavigationPage&amp;将导航栏文本颜色设置为白色

Application班级(通常为App.cs)中,MainPage必须为NavigationPage,且BarTextColor必须设为Color.White } enter image description here

3。清洁&amp;重建应用

有时编译器在您清理并重建应用程序之前不会更新状态栏颜色,因此在步骤1和步骤1中进行更改之后2,清理应用程序并重建它。 enter image description here

示例应用

https://github.com/brminnick/SaveImageToDatabaseSampleApp/

答案 1 :(得分:1)

在IOS中更改状态栏的唯一方法是在AppDelegate中的FinishedLaunching中使用此代码

public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
    global::Xamarin.Forms.Forms.Init ();

    LoadApplication (.....);
    app.SetStatusBarStyle(UIStatusBarStyle.LightContent, true);

    return base.FinishedLaunching (app, options);
}

答案 2 :(得分:1)

所以我为更改状态栏颜色和状态栏文本颜色所做的事情是:

Info.plist

<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>
<key>UIStatusBarHidden</key>
<true/>

AppDelegate

内部函数 FinishedLaunching()中,在下面添加代码:

UIView statusBar = UIApplication.SharedApplication.ValueForKey(new NSString("statusBar")) as UIView;
if (statusBar != null && statusBar.RespondsToSelector(new ObjCRuntime.Selector("setBackgroundColor:")))
{
    statusBar.BackgroundColor = Color.FromHex("#7f6550").ToUIColor(); // change to your desired color 
}

App.xaml

我在下面添加了代码,以将状态栏文本颜色更改为白色

<Style TargetType="{x:Type NavigationPage}">
     <!--<Setter Property="BarBackgroundColor" Value="Black" />-->
     <Setter Property="BarTextColor" Value="White" />
</Style> 

答案 3 :(得分:0)

选择NavigationBar并将Style属性更改为Black

enter image description here