【发布时间】:2017-06-14 20:35:24
【问题描述】:
我有一个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 的文本将为白色。同样,如果我选择 Light 主题,则 TabBar 和 NavigationBar 背景颜色将为白色,TabBar 的选定图像将为绿色,NavigationBar 的文本将为黑色。
【问题讨论】:
-
您的视图是使用 xaml 还是直接代码?
-
解释你到底想要什么?想要更改标签栏的图标颜色或背景颜色。
-
@KKRocks 请检查我的编辑。谢谢
-
好的,你遇到了什么问题?
-
@KKRocks --> 现在这些颜色只会在你第一次启动应用程序时生效。我希望它在我改变主题时改变。
标签: xamarin xamarin.ios xamarin.forms