2012-03-26 102 views
19

这里是快照: enter image description here我可以更改导航栏项目的位置吗?

和代码是在这里:

UIButton *leftButton = [UIButton buttonWithType:UIButtonTypeCustom]; 
leftButton.frame = CGRectMake(0.0f, 0.0f, 46.0f, 32.0f); 
[leftButton setBackgroundImage:[UIImage imageNamed:@"navi_register_up.png"] forState:UIControlStateNormal]; 
[leftButton addTarget:self action:@selector(doRegister) forControlEvents:UIControlEventTouchUpInside]; 

UIBarButtonItem *leftBarItem = [[UIBarButtonItem alloc] initWithCustomView:leftButton]; 
self.navigationItem.leftBarButtonItem = leftBarItem; 
[leftBarItem release]; 

有没有办法动按钮一些PX? 谢谢:)

回答

4

在要分开的项目之间添加一个UIBarButtonSystemItemFlexibleSpace项目。

+0

UIBarButtonSystemItemFlexibleSpace可以在水平分离项目。但我想要移动按钮。 UIBarButtonSystemItemFlexibleSpace可以帮助吗? – 2012-03-26 03:15:47

+0

不是垂直的,没有。您可以随时使用UIToolbar并添加一个UILabel以及您需要的框架来垂直放置它,然后添加相应的按钮。 – WrightsCS 2012-03-26 04:08:26

0

标准栏按钮的高度为29pt。帮你一个忙,然后缩小leftbutton的高度和navi_register_up.png的高度。

11

你可以试试这个,

leftButton.imageEdgeInsets = UIEdgeInsetsMake(-2, 0, 0, 0); 
+0

它不起作用... – 2012-03-26 03:33:36

+0

@理想评论学派,我已经测试过了,它可以移动UIButton的图像:) – looyao 2012-03-26 03:54:58

+0

你用我的代码测试了吗?只需添加“leftButton.imageEdgeInsets = UIEdgeInsetsMake(-2,0,0,0);” ?我会再次检查它 – 2012-03-26 04:22:38

67

你需要创建一个系统项目UIBarButtonSystemItemFixedSpace与-5宽度将删除5 px填充一个UIBarButtonItem。然后设置leftBarButtonItems与两个固定的空间项目,你的背部栏项目这样的 -

UIBarButtonItem *negativeSpacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil]; 
[negativeSpacer setWidth:-5]; 

self.navigationItem.leftBarButtonItems = [NSArray arrayWithObjects:negativeSpacer,leftBarItem,nil]; 
+7

如果你需要水平移动UIBarButtonItem,效果很好 – florian 2013-04-19 09:28:35

+0

你是一个明星人+1我来自 – Nilesh 2013-08-16 11:09:51

+3

嗯,这个工程,但似乎只适用于一个按钮。间隔和按钮似乎不工作想法 – d2burke 2013-12-12 15:27:12

0

您可以使用此代码,我认为这将是对您有所帮助。 UIButton * button = [UIButton buttonWithType:UIButtonTypeCustom]; button.frame = CGRectMake(0,0,50,32); [按钮setBackgroundImage:[UIImage imageNamed:@“btn_back.png”] forState:UIControlStateNormal];

[button addTarget:self action:@selector(BackBtnClicked) forControlEvents:UIControlEventTouchUpInside]; 
UIView *backButtonView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 50, 32)]; 
backButtonView.bounds = CGRectOffset(backButtonView.bounds, -1, -4); 
[backButtonView addSubview:button]; 

UIBarButtonItem *barButtonItem = [[UIBarButtonItem alloc] initWithCustomView:backButtonView]; 
//barButtonItem.imageInsets = UIEdgeInsetsMake(-6, 20, 30, 0); 

[self.navigationItem setLeftBarButtonItem:barButtonItem]; 
0

我有类似的问题,并发现在故事板中有足够的选项。只需点击导航栏项目,您应该可以看到x/y位置选项。

enter image description here

1

这里有一个雨燕3.0版本最投票回答:

let soundButton = UIBarButtonItem(image:image , style: UIBarButtonItemStyle.plain, target: self, action: #selector(self.soundPressed)) 

     let negativeSpacer = UIBarButtonItem(barButtonSystemItem: .fixedSpace, target: nil, action: nil) 
     negativeSpacer.width = -5 

     self.navigationItem.rightBarButtonItems = [negativeSpacer,soundButton]