我可以更改导航栏项目的位置吗?

这里是快照: 在这里输入图像说明

代码在这里:

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

有什么办法把button移动一些PX? 谢谢:)

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

 UIBarButtonItem *negativeSpacer = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemFixedSpace target:nil action:nil]; [negativeSpacer setWidth:-5]; self.navigationItem.leftBarButtonItems = [NSArray arrayWithObjects:negativeSpacer,leftBarItem,nil]; 

你可以试试这个,

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

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

标准栏button的高度是29pt。 帮你一个忙,而不是缩小leftbutton的高度和navi_register_up.png的高度。

你可以使用这个代码,我想这会对你有所帮助。 UIButton * button = [UIButton buttonWithType:UIButtonTypeCustom]; button.frame = CGRectMake(0,0,50,32); [button 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]; 

我遇到了类似的问题,并在故事板中find了一个足够的选项。 只需点击导航栏项目,你应该看到的X / Y位置选项。

在这里输入图像说明

这是一个最受投票回答的Swift 3版本:

  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]