我有一个Xamarin.Forms应用程序,目前正在删除b
导航栏下的行。
a
我在iOS
中尝试过public partial class MainPage : TabbedPage
{
public MainPage()
{
InitializeComponent();
var homePage = new NavigationPage(new HomePage())
{
Title = "Home",
Icon = "home.png"
};
var helpPage = new NavigationPage(new HelpPage())
{
Title = "Help",
Icon = "help.png"
};
// other declarations here
Children.Add(homePage);
Children.Add(helpPage);
// and more
}
}
,但是它根本无法正常工作,因此我创建了以下渲染器。
UINavigationBar.Appearance.ShadowImage = new UIImage();
这有效,但仅在AppDelegate
(这是应用程序启动时打开的第一页)中起作用。
如下图所示,using UIKit;
using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;
[assembly: ExportRenderer(typeof(NavigationPage), typeof(Japanese.iOS.NavigationPageRenderer))]
namespace Japanese.iOS
{
public class NavigationPageRenderer : NavigationRenderer
{
public override void ViewDidLoad()
{
base.ViewDidLoad();
UINavigationBar.Appearance.SetBackgroundImage(new UIImage(), UIBarMetrics.Default);
UINavigationBar.Appearance.ShadowImage = new UIImage();
}
}
}
仍然显示该行以及我的其余页面。
答案 0 :(得分:2)
您必须在PageRenderer中的NavigationBar实例上设置Appearance和ShadowImage
public class NavigationPageRenderer : NavigationRenderer
{
protected override void OnElementChanged(VisualElementChangedEventArgs e)
{
base.OnElementChanged(e);
NavigationBar.SetBackgroundImage(new UIImage(), UIBarMetrics.Default);
NavigationBar.ShadowImage = new UIImage();
}
}
Xamarin已经提供了通过Platform Sepcifics隐藏https://docs.microsoft.com/en-us/xamarin/xamarin-forms/platform/platform-specifics/consuming/ios#navigationpage-hideseparatorbar
的属性。