删除Xamarin.iOS中的导航栏行不起作用

时间:2018-10-16 13:48:50

标签: xamarin xamarin.forms xamarin.ios

我有一个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(这是应用程序启动时打开的第一页)中起作用。

enter image description here 如下图所示,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(); } } } 仍然显示该行以及我的其余页面。

enter image description here 有人知道我在做什么错吗?

1 个答案:

答案 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

的属性。