Xamarin Forms Цвет текста в строке состояния iOS

Я не могу изменить цвет текста в строке состояния моего приложения XAMAIN Forms iOS на белый. Я изменил свой info.plist следующим образом:

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

Тем не менее цвет по-прежнему остается черным. Есть ли другой способ изменить цвет текста в строке состояния?

Ответ 1

В Xamarin.Forms есть три вещи, которые необходимо сделать, чтобы получить белый текст в строке состояния iOS. Я также разместил пример приложения Xamarin.Forms, которое использует белый текст в строке состояния iOS.

1. Обновите Info.plist

В Info.plist добавьте View controller-based status bar appearance Boolean Property View controller-based status bar appearance и установите для нее значение No

enter image description here

2. Используйте NavigationPage и установите цвет текста панели навигации на белый

В классе Application (обычно App.cs) MainPage должен быть NavigationPage, а для BarTextColor должно быть установлено значение Color.White enter image description here

3. Очистить и восстановить приложение

Иногда компилятор не обновляет цвет строки состояния, пока вы не очистите и не перестроите приложение, поэтому после внесения изменений в шагах 1 и 2 очистите приложение и перестройте его. enter image description here

Образец приложения

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

Ответ 2

Единственный способ изменить строку состояния в IOS для меня - использовать этот код в FinishedLaunching в AppDelegate

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

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

    return base.FinishedLaunching (app, options);
}

Ответ 3

Выберите NavigationBar и измените свойство Style на Black.

введите описание изображения здесь

Ответ 4

Итак, что я сделал для изменения цвета строки состояния и цвета строки состояния:

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>