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

Iphone 我可以更改导航栏项目的位置吗?,iphone,ios,Iphone,Ios,以下是快照: 代码如下: 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]; [l

以下是快照:

代码如下:

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];
有没有办法把按钮向上移动一些像素?
谢谢:)

在要分隔的项目之间添加一个
uiBarButtonSystemFlexibleSpace
项目。

标准条形按钮的高度为29磅。帮自己一个忙,只需缩小
leftbutton
的高度和
navi_register_up.png
的高度即可

你可以试试这个

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

您需要使用系统项创建一个宽度为-5的
uiBarButtonSystemFixedSpace
UIBarButtonItem,它将删除
5 px
填充。然后使用固定空格项和后栏项设置
leftBarButtonims
,如下所示-

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

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

您可以使用此代码,我认为这将对您有所帮助。 UIButton*button=[UIButton button类型:UIButtonTypeCustom]; button.frame=CGRectMake(0,0,50,32); [按钮setBackgroundImage:[UIImage ImageName:@“btn_back.png”]用于状态: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];

我有一个类似的问题,并找到了一个选项,足以在故事板。只需单击导航栏项,您就会看到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]

UIBarButtonSystemItemFlexibleSpace可以水平分隔项目。但是我想把按钮向上移动。UIBarButtonSystememFlexibleSpace是否可以提供帮助?不是垂直的,不是。您始终可以使用UIToolbar并使用框架添加UILabel,以便将其垂直放置,然后添加相应的按钮@理想评论学派, 我已经测试过了,它可以将UIButton的图像向上移动。:)你用我的代码进行测试吗?只需添加“leftButton.imageEdgeInsets=UIEdgeInsetsMake(-2,0,0,0);”?我将再次检查它是否有文本和背景色。当我设置edgeInsets时,它移动的是文本,而不是按钮框…:(几乎可以正常工作。图像垂直延伸,除非您还指定一个正的底部插入:UIEdgeInsetsMake(-2,0,2,0)。至少我是这样(iOS 8).如果你需要水平移动uibarbuttonite,效果非常好。嗯,这很好,但似乎只对一个按钮有效。使用第二个间隔符和按钮似乎不起作用。想法?聪明而干净。奇妙的解决方案:)我尝试了几种不同的方法,这是唯一对我有效的方法。谢谢如果要垂直移动项目,该怎么办?