У меня есть приложение Xamarin Forms
, и в настоящее время я работаю над кодом для iOS. В моих настройках у меня есть возможность изменить тему приложения (Темный и Светлый). Это в основном просто меняет цвета фона и цвета текста на страницах. Теперь я хочу изменить SelectedImageTintColor
и BarTintColor
для TabBar
, а также BarTintColor
и TintColor
для NavigationBar
. В настоящий момент я создаю средство визуализации для страницы с вкладками:
protected override void OnElementChanged(VisualElementChangedEventArgs e)
{
base.OnElementChanged(e);
App.theme = (Theme)App.DB.GetIntSetting("ThemeColor");
switch (App.theme)
{
case Theme.Dark:
{
TabBar.SelectedImageTintColor = UIColor.FromRGB(255, 165, 0);
TabBar.BarTintColor = UIColor.Black;
break;
}
case Theme.Light:
{
TabBar.SelectedImageTintColor = UIColor.FromRGB(60, 132, 60);
TabBar.BarTintColor = UIColor.White;
break;
}
}
}
Прямо сейчас эти цвета вступают в силу только при первом запуске приложения.
Я исследовал эту проблему, но не смог найти ответа от кого-либо о том, как решить эту проблему.
Я знаю, что было много изменений в Xamarin, поэтому я хотел бы узнать, есть ли какие-либо недавние разработки или новые способы решения этой проблемы. Я открыт для изучения любых возможных предложений, поскольку часть требования к приложению заключается в том, чтобы иметь возможность изменять эти цвета.
Редактирование:
Моя страница Tabbed
была создана следующим образом:
public partial class MainPage : TabbedPage
{
public MainPage()
{
InitializeComponent();
var phrasesPage = new NavigationPage(new PhrasesPage())
{
Title = "Play",
Icon = "play1.png"
};
var settingsPage = new NavigationPage(new SettingsPage())
{
Title = "Settings",
Icon = "settings.png"
};
// other declarations here
Children.Add(phrasesPage);
Children.Add(settingsPage);
// and more
}
}
Например, если я выбираю тему Dark, тогда цвет фона TabBar
и NavigationBar
будет черным, то элемент TabBar
selected будет оранжевым, а текст NavigationBar
будет белым. Аналогично, если я выбираю тему "Свет", то цвет фона TabBar
и NavigationBar
будет белым, то элемент TabBar
selected будет зеленым, а текст NavigationBar
будет черным.