Невозможно удалить тень с панели навигации на Xamarin iOS - PullRequest
0 голосов
/ 28 апреля 2020

Я пытаюсь удалить эту надоедливую строку под панелью навигации только в iOS: пример

Мне удалось исправить это в новом проекте, создав средство визуализации клиентов. в Xamarin iOS как это:

Custom NavigationPageRenderer.cs

[assembly: ExportRenderer(typeof(CustomNavigationPage), typeof(CustomNavigationRenderer))]
namespace MyProject.iOS.Implementations
{
    public class CustomNavigationRenderer : NavigationRenderer
    {
        public override void ViewDidLoad()
        {
            base.ViewDidLoad();

            UINavigationBar.Appearance.SetBackgroundImage(new UIImage(), UIBarMetrics.Default);
            UINavigationBar.Appearance.ShadowImage = new UIImage();
            UINavigationBar.Appearance.BackgroundColor = UIColor.Clear;
            UINavigationBar.Appearance.TintColor = UIColor.White;
            UINavigationBar.Appearance.BarTintColor = UIColor.White;
            UINavigationBar.Appearance.Translucent = true;
        }

        protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
            }

            base.Dispose(disposing);
        }
    }
}

Однако, это решение не работает в моем текущем проекте, и я отчаянно пытаюсь найти Почему. Вот соответствующие страницы, связанные с навигацией в моем приложении. Кто-нибудь может обнаружить ошибку, почему мой customnavigationrenderer не работает?

App.xaml.cs

  public static NavigationPage Navigator
        {
            get;
            internal set;
        }

// MenuCompletePage is the main page of the app

mainViewModel.MenuComplete = new MenuCompleteViewModel();
Application.Current.MainPage = new MasterCompletePage();

MasterCompletePage.xaml

<MasterDetailPage xmlns="http://xamarin.com/schemas/2014/forms"
                xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
                xmlns:pages="clr-namespace:Myproject.Views"
                x:Class="MyProject.Views.MasterCompletePage">
    <MasterDetailPage.Master>
        <pages:MenuPage/>
    </MasterDetailPage.Master>
    <MasterDetailPage.Detail>
        <pages:CustomNavigationPage x:Name="Navigator">
            <x:Arguments>
                <pages:MenuCompletePage/>
            </x:Arguments>
        </pages:CustomNavigationPage>
    </MasterDetailPage.Detail>
</MasterDetailPage>

MasterCompletePage.xaml.cs

[XamlCompilation(XamlCompilationOptions.Compile)]
  public partial class MasterCompletePage : MasterDetailPage
    {
        public MasterCompletePage()
        {
            InitializeComponent();
        }
 protected override void OnAppearing()
        {
            base.OnAppearing();
            App.Navigator = this.Navigator;
            App.Master = this;
        } 
    }

CutomNavigationPage.xaml

<NavigationPage 
xmlns="http://xamarin.com/schemas/2014/forms"
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
x:Class="MyProject.Views.CustomNavigationPage"
xmlns:iOS="clr-namespace:Xamarin.Forms.PlatformConfiguration.iOSSpecific;assembly=Xamarin.Forms.Core"
iOS:NavigationPage.IsNavigationBarTranslucent="True"
BarTextColor="White">
<NavigationPage.BarBackgroundColor>
    <OnPlatform x:TypeArguments="Color">
        <On Platform="Android, iOS" Value="#009b66" />
    </OnPlatform>
</NavigationPage.BarBackgroundColor>

CutomNavigationPage.xaml.cs

    public partial class CustomNavigationPage : NavigationPage
{
    public CustomNavigationPage() : base()
    {
        InitializeComponent(); 
    }

    public CustomNavigationPage(Page root) : base(root)
    {
        InitializeComponent();
    }

    public bool IgnoreLayoutChange { get; set; } = false;

    protected override void OnSizeAllocated(double width, double height)
    {
        if (!IgnoreLayoutChange)
            base.OnSizeAllocated(width, height);
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...