在我的Xamarin.Forms 4.4项目中,我使用以下代码将导航栏的全局颜色定义为带有白色文本的纯橙色::
UINavigationBar.Appearance.BackgroundColor = UIColor.Orange;
UINavigationBar.Appearance.BarTintColor = UIColor.Orange;
UINavigationBar.Appearance.TintColor = UIColor.White;
UINavigationBar.Appearance.TitleTextAttributes = new UIStringAttributes()
{
ForegroundColor = UIColor.White
};
自从将我的Xamarin.Forms NuGet软件包从4.4升级到4.5之后,我在iOS 13中运行的任何应用都在浅色模式下具有带有白色文本的纯白色导航栏。
[我知道iOS 13中有一些新类可以使用。但是,我不知道如何在iOS 13中使用它们来获得相同的外观(或只是可读性)。这是我尝试过的:
UINavigationBarApperance nba = new UINavigationBarAppearance();
nba.ConfigureWithOpaqueBackground();
nba.BackgroundColor = UIColor.Orange;
nba.BarTintColor = UIColor.Orange;
nba.TintColor = UIColor.White;
UINavigationBar.Appearance.ScrollEdgeAppearance = nab;
UINavigationBar.Appearance.StandardAppearance = nab;
UINavigationBar.Appearance.CompactAppearance = nab;
这是我的结果:
我实际上可以看到似乎是白色渐变叠加的一些颜色渗色。我怀疑深灰色是由于我选择的颜色上的深渐变造成的。
Xamarin.Forms项目中没有问题。效果如下:
有一个注释可能会有所帮助,使用共享代码需要在AppDelegate.cs
中编写。// application events from iOS.
[Register("AppDelegate")]
public partial class AppDelegate : global::Xamarin.Forms.Platform.iOS.FormsApplicationDelegate
{
//
// This method is invoked when the application has loaded and is ready to run. In this
// method you should instantiate the window, load the UI into it and then make the window
// visible.
//
// You have 17 seconds to return from this method, or iOS will terminate your application.
//
public override bool FinishedLaunching(UIApplication app, NSDictionary options)
{
global::Xamarin.Forms.Forms.Init();
global::Xamarin.Forms.FormsMaterial.Init();
LoadApplication(new App());
Console.WriteLine("------13--------");
UINavigationBar.Appearance.BackgroundColor = UIColor.Orange;
UINavigationBar.Appearance.BarTintColor = UIColor.Orange;
UINavigationBar.Appearance.TintColor = UIColor.White;
UINavigationBar.Appearance.TitleTextAttributes = new UIStringAttributes()
{
ForegroundColor = UIColor.White
};
return base.FinishedLaunching(app, options);
}
}
如果在其他地方编写,例如在Sub-ViewController中,将无法工作。