Так что мне, наконец, удалось решить эту проблему ...
Мне нужно было создать пользовательский Content Page
, потому что все остальные решения не работали.Поэтому я создал этот пользовательский рендерер только в своем проекте iOS:
[assembly: ExportRenderer(typeof(ContentPage), typeof(CustomContentPageRenderer))]
namespace TestProject.iOS.Bll.Utils.Renderers
{
public class CustomContentPageRenderer : PageRenderer
{
public override void DidMoveToParentViewController(UIViewController parent)
{
base.WillMoveToParentViewController(parent);
var titleView = new UITextView();
var page = this.Element as ContentPage;
try
{
if (!string.IsNullOrEmpty(page.Title))
{
titleView.Text = page.Title;
titleView.TextColor = UIColor.White;
titleView.Font = UIFont.SystemFontOfSize(17, UIFontWeight.Regular);
var bgColor = page.BackgroundColor;
titleView.BackgroundColor = UIColor.FromRGBA((int)bgColor.R, (int)bgColor.G, (int)bgColor.B, 0);
parent.NavigationItem.TitleView = titleView;
parent.NavigationItem.TitleView.ContentMode = UIViewContentMode.ScaleAspectFit;
}
}
catch (Exception e)
{
}
}
}
}
И я также удалил весь код, который я загружал ранее, в своем файле AppDelegate
и в файле App.xaml.cs
.Я оставил коды из ViewModels
, потому что она меняла кнопку возврата на белый, и я удалил новый класс NagivationPage
, который я создал ранее.
Я собираюсь объяснить, почему я сделал некоторые извещи, которые вы там видели:
Чтобы изменить заголовок, я создал UITextView()
и установил его на NavigationItem.TitleView
родительской страницы.Я установил titleView.Text = page.Title;
, потому что у моей исходной страницы уже есть заголовок, поэтому я просто использую его повторно.И backgroundcolor
Мне пришлось сделать все это, чтобы свойство backgroundcolor
работало именно так, как я хотел.
И эта функция DidMoveToParentViewController
была просто так, что она могла делать все это до NavigationAsync
из Призмы.