【问题标题】:UINavigationBar - How to change the position of UIBarButtonItem?UINavigationBar - 如何更改 UIBarButtonItem 的位置?
【发布时间】:2011-11-29 10:12:06
【问题描述】:

我对 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
}

【问题讨论】:

  • 您是否可以选择使用UIToolBar
  • 谢谢。我可以使用 UINavigationBar 之类的工具栏吗?在 IB 中,我看到工具栏在“屏幕底部”使用。将UIToolbar放在顶部是否正确?
  • 是的,您可以在页面顶部放置一个工具栏,这是完全可以接受的。当您在需要返回上一页/屏幕的情况下进行多级表格导航时,NavigationBars 非常有用。
  • @Candide 如何更改故事板中toolbar 的高度?

标签: ios xamarin.ios positioning uinavigationbar uibarbuttonitem


【解决方案1】:

不,UINavigation 有特定的行为,只有左右按钮。如果您需要定位按钮,您应该使用 UIToolbar。在中间添加垫片以调整按钮的位置。

【讨论】:

  • 谢谢。请看我的评论。
【解决方案2】:

我正在设置自定义按钮的框架并将按钮放置在视图中

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];

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多