我有一个 Xamarin Forms
应用程序,目前正在为iOS编写代码。在我的设置中,我有一个选项可以更改应用程序的主题(暗色和亮色)。这基本上只是更改页面的背景颜色和文本颜色。现在我想做的是能够更改 TabBar
的 SelectedImageTintColor
和 BarTintColor
以及 NavigationBar
的 BarTintColor
和 TintColor
。目前我已经为分页标签创建了一个渲染器:
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
}
}
比如,如果我选择暗色主题,那么TabBar
和NavigationBar
的背景颜色将会是黑色,TabBar
所选中的图像会是橙色,而NavigationBar
的文本将会是白色。同样地,如果我选择亮色主题,那么TabBar
和NavigationBar
的背景颜色将会是白色,TabBar
所选中的图像会是绿色,而NavigationBar
的文本将会是黑色。