Xamarin iOS меняет цвет значка по умолчанию на белый в светлом режиме

Как отобразить значок темного режима в светлом режиме на устройстве iOS? Я искал эту проблему уже несколько месяцев, и каждый пост, кажется, заходит в тупик или решения просто не работают. Использование Xamarin 17.3 и VS 2022 и разработка приложения для Android и iOS. У нас есть цвет фона оболочки (<Setter Property="Shell.BackgroundColor" Value="141B4D"), тёмно-синий. По умолчанию черные значки (аккумулятор, время и т. д.) плохо отображаются на этом фоне (это цвет компании, и его нельзя изменить). Кажется, Android справляется с этим самостоятельно, и мне не пришлось любые изменения и светлые значки отображаются на темном фоне как в светлом, так и в темном режимах. Но на iOS в светлом режиме отображаются черные значки, но их не видно. В темном режиме светлые значки отображаются нормально. Некоторое время назад я попытался сообщить в общем приложении, чтобы использовать значки темного режима в светлом режиме.

    <Shell.Resources>
    <ResourceDictionary>
        <Style x:Key = "BaseStyle" TargetType = "Element">
            <Setter Property = "Shell.BackgroundColor" Value = "{AppThemeBinding Dark=Black, Light=#141B4D}" />
            <Setter Property = "Shell.ForegroundColor" Value = "{AppThemeBinding Dark=White, Light=White}" />

Но это не работает. Так что мне действительно нужна помощь в решении этого. И если это не правильный способ справиться с этим, приветствуется хорошая альтернатива. Спасибо


70
1

Ответ:

Решено

Судя по вашему коду, кажется, что вы просто хотите, чтобы текст или значок в строке состояния были белыми, если я правильно понимаю. Таким образом, простой способ добиться этого — добавить следующий код в AppDelegate:

    public override bool FinishedLaunching(UIApplication app, NSDictionary options)
    {
        ...
        UIApplication.SharedApplication.StatusBarStyle = UIStatusBarStyle.LightContent;
        return base.FinishedLaunching(app, options);
    }

Кроме того, вы должны добавить один ключ в info.plist

<key>UIViewControllerBasedStatusBarAppearance</key>
<false/>

Примечание. В редакторе списка свойств отображается внешний вид строки состояния на основе контроллера просмотра.

Затем на темно-синем фоне вы также можете увидеть белую иконку. Следующее изображение в светлом режиме.

Надеюсь, это сработает для вас.