UINavigationBar - Как изменить положение UIBarButtonItem? - PullRequest
1 голос
/ 02 октября 2011

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

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

Это класс NavigationBar (созданв МТ):

[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
}

Ответы [ 2 ]

3 голосов
/ 16 января 2013

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

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];
2 голосов
/ 02 октября 2011

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

...