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

理想评*_*论学派 21 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];
[leftButton addTarget:self action:@selector(doRegister) forControlEvents:UIControlEventTouchUpInside];

UIBarButtonItem *leftBarItem = [[UIBarButtonItem alloc] initWithCustomView:leftButton];
self.navigationItem.leftBarButtonItem = leftBarItem;
[leftBarItem release];
Run Code Online (Sandbox Code Playgroud)

有没有办法将按钮向上移动一些px?谢谢:)

saa*_*nib 70

您需要创建一个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];
Run Code Online (Sandbox Code Playgroud)

  • 如果需要水平移动UIBarButtonItem,则效果很好. (7认同)
  • 嗯,这可行,但似乎只适用于一个按钮.使用第二个垫片和按钮似乎不起作用.想法? (3认同)

xda*_*001 13

你可以试试这个,

leftButton.imageEdgeInsets = UIEdgeInsetsMake(-2, 0, 0, 0);
Run Code Online (Sandbox Code Playgroud)

  • 几乎工作.除非您还指定正底部插入,否则图像将垂直拉伸:UIEdgeInsetsMake(-2,0,2,0).至少那是我的情况(iOS 8). (2认同)

Wri*_*sCS 4

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