我已经将UINavigationBar子类化了。 NavigationBar有两个类型为UIBarButtonItem的按钮。是否可以移动这些按钮?例如,我想向右移动“左按钮”50px,向左移动“右按钮”50px。
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
}
答案 0 :(得分:3)
我正在设置自定义按钮的框架并将按钮放在视图中
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];
答案 1 :(得分:2)
不,UINavigation有一个特定的行为,只有左右按钮。如果需要定位按钮,则应使用UIToolbar。在两者之间添加垫片以调整按钮的位置。