我正在使用Xamarin.Forms并尝试更改iOS导航栏的背景颜色。我有一个自定义导航栏类,它继承自NavigationPage,并具有可绑定属性和构造函数,在其中设置了导航栏的颜色。根据我的理解,导航栏在Xamarin.Forms导航背景上有一个默认的背景(黑色)。我可以通过SetColor()方法来设置背景颜色(见下文)。但是,它留下了一条黑线,这是导航栏(iOS)的背景,如下图所示:图片链接
现在,我正试图将iOS导航栏背景颜色设置为白色或透明。我已经花了很多时间,但没有任何效果。请问如何将背景设置为白色?
导航栏渲染器类:
//PCL class
public class CustomNavigationalPage : NavigationPage
{
public static readonly BindableProperty BarBgColorProperty =
BindableProperty.
Create<CustomNavigationalPage, UIColor>
(p => p.BarBackgroundColorR, null);
public UIColor BarBackgroundColorR
{
get { return (UIColor)base.GetValue (BarBgColorProperty); }
set { base.SetValue (BarBgColorProperty, value); }
}
public NavigationalPageCustomized() : base()
{
SetColor();
}
void SetColor()
{
BarBackgroundColor = Color.Transparent;
BarTextColor = Color.Blue;
}
}
导航栏渲染器类:
[assembly: ExportRenderer (typeof (CustomNavigationalPage), typeof (CustomNavigationPageRenderer))]
namespace project.iOS
{
public class CustomNavigationPageRenderer : NavigationRenderer
{
public CustomNavigationPageRenderer()
{
// UINavigationBar.Appearance.SetBackgroundImage (UIImage.FromFile ("navbg.png"), UIBarMetrics.Default);
}
protected override void OnElementChanged (VisualElementChangedEventArgs args)
{
base.OnElementChanged (args);
var nb = (NavigationalPageCustomized) Element;
if (nb != null)
{
nb.BarBackgroundColorR = UIColor.White;
}
}
}
}