UINavigationBar - Как изменить положение UIBarButtonItem?

Я создал подкласс UINavigationBar. NavigationBar имеет две кнопки типа UIBarButtonItem. Можно ли переместить эти кнопки? Например, я хотел бы переместить «левую кнопку» на 50 пикселей вправо и «правую кнопку» на 50 пикселей влево.

Является ли LayoutSubViews подходящим местом для перемещения этой кнопки?

Это класс NavigationBar (созданный в MT):

[MonoTouch.Foundation.Register("NavigationBar")]
public class NavigationBar : UINavigationBar
{
    public NavigationBar (IntPtr handle) : base (handle)
    {
        Initialize ();
    }

    [Export ("initWithCoder:")]
    public NavigationBar (NSCoder coder) : base (coder)
    {
        Initialize ();
    }

    public NavigationBar(RectangleF frame, string title) : base (frame)
    {
        InitializeWithStyleAndTitle(title);
    }   

    void Initialize() { }

    void InitializeWithStyleAndTitle(string title)
    {
        //- title
        UINavigationItem navItem = new UINavigationItem(title);

        //- left button
        UIBarButtonItem leftBarButtonItem = new UIBarButtonItem("back", UIBarButtonItemStyle.Plain, this, new Selector("backAction"));
        navItem.LeftBarButtonItem = leftBarButtonItem;

        //- right button
        UIBarButtonItem rightBarButtonItem = new UIBarButtonItem("update", UIBarButtonItemStyle.Plain, this, new Selector("updateAction"));
        navItem.RightBarButtonItem = rightBarButtonItem;    

        //- style 
        BarStyle = UIBarStyle.Black;

        PushNavigationItem(navItem, false);
    }

    //- selectors omitted
}

person Lorenzo B    schedule 02.10.2011    source источник
comment
Подходит ли вам вариант UIToolBar?   -  person JustSid    schedule 02.10.2011
comment
Спасибо. Могу ли я использовать панель инструментов, такую ​​​​как UINavigationBar? В IB я видел, что панель инструментов используется внизу экрана. Правильно ли размещать UIToolbar вверху?   -  person Lorenzo B    schedule 02.10.2011
comment
Да, вы можете разместить панель инструментов в верхней части страницы, и это вполне приемлемо. Навигационные панели полезны, когда вы выполняете многоуровневую навигацию по таблице, когда вам нужно вернуться на предыдущую страницу/экран.   -  person Candide    schedule 02.10.2011
comment
@Candide, как изменить высоту toolbar в раскадровке?   -  person aircraft    schedule 01.11.2016


Ответы (2)


Нет, UINavigation имеет особое поведение, только левая и правая кнопки. Вместо этого вы должны использовать UIToolbar, если вам нужно расположить кнопки. Добавьте прокладки между ними, чтобы отрегулировать расположение кнопок.

person Candide    schedule 02.10.2011
comment
Спасибо. Пожалуйста, смотрите мой комментарий. - person Lorenzo B; 02.10.2011

Я устанавливаю рамку пользовательской кнопки и помещаю кнопку в представление

CustomButton *menu = [[CustomButton alloc] initWithFrame:CGRectMake(7, 3, 35, 35)];
[menu setImage:[UIImage imageNamed:@"sliding_drawer_white_icons"] forState:UIControlStateNormal];
UIView * menuButtonView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 46.0f, 40.0f)];
[menuButtonView addSubview:menu];
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithCustomView:menuButtonView];
person pablobart    schedule 16.01.2013