Я пытаюсь удалить эту надоедливую строку под панелью навигации только в 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);
}
}