Xamarin Forms - пользовательский рендер для заголовка центральной страницы в ios - PullRequest
0 голосов
/ 25 июня 2018

В формах Xamarin я пытаюсь выровнять заголовок страницы по левому краю, я знаю, что мне нужен пользовательский рендер, но я не уверен, куда идти после следующего кода.

Это может быть даже неправильно, но я думаю, что мне нужно создать страницу рендера и сделать выравнивание там?

[assembly: ExportRenderer(typeof(Page), typeof(gl_mobile_app.iOS.TitleExRenderer))]
namespace gl_mobile_app.iOS
{
    public class TitleExRenderer : Xamarin.Forms.Platform.iOS.PageRenderer
    {
        protected override void OnElementChanged(VisualElementChangedEventArgs e)
        {
            base.OnElementChanged(e);
            // align title
        }
    }
}

1 Ответ

0 голосов
/ 25 июня 2018

Это официально не поддерживается Apple в по умолчанию UINavigationBar .

Вы можете попробовать хитрость: поместить метку в TopItem.LeftBarButtonItem и не использовать свойство Title по умолчанию

Что-то вроде этого в вашем пользовательском рендерере:

var label = new UILabel();
//this is the variable containing the title you need to pass it as a bindable property
label.Text = title; 
label.TextAlignment = UITextAlignment.Left;
label.SizeToFit();
NavigationController.NavigationBar.TopItem.LeftBarButtonItem = new UIBarButtonItem(label);

Обновление

Вы также можете прочитать этот отличный пост в блоге: http://www.xamboy.com/2017/12/06/navigation-bar-customization-in-xamarin-forms/

Обновление 2

Вы можете попытаться взять заголовок страницы по умолчанию, использовать его в левом положении, а затем расположить его примерно так:

var label = new UILabel();
//get the default title
label.Text =  NavigationController.NavigationBar.TopItem.Title; 
label.TextAlignment = UITextAlignment.Left;
label.SizeToFit();

//empty the default title (try with empty string or null if empty doesnt work)
NavigationController.NavigationBar.TopItem.Title = "";    

NavigationController.NavigationBar.TopItem.LeftBarButtonItem = new UIBarButtonItem(label);

Это не проверено, дайте мне знать, если получится:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...