rightBarButtonItem信息按钮,右侧没有空格

时间:2010-09-11 18:08:09

标签: iphone space uinavigationitem rightbarbuttonitem

我设置UIViewController以在UINavigationItem的右侧显示信息按钮,如下所示:

UIButton *infoButton = [UIButton buttonWithType:UIButtonTypeInfoLight];
[infoButton addTarget:self action:@selector(toggleAboutView) forControlEvents:UIControlEventTouchUpInside]; 
self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:infoButton] autorelease];

完美无缺,但唯一的问题是我在按钮右侧留下了很少甚至没有空间,看起来很丑陋:

Infobutton

按钮是否有任何方法可以从右侧移动约5 px?

感谢。

2 个答案:

答案 0 :(得分:17)

infoButton.contentEdgeInsets = UIEdgeInsetsMake(0, -10, 0, 10);

答案 1 :(得分:14)

尝试设置infoButton.contentEdgeInsets(或imageEdgeInsets);

之类的东西
infoButton.contentEdgeInsets = (UIEdgeInsets){.right=10};

我不确定它是否适用于“系统”按钮,但它可能会。

如果这不起作用,最简单的方法可能就是把它放在UIView里面。

编辑:据推测,工具栏会调用[customView sizeThatFits:blah]来查看视图“想要”的大小。上面的代码应该意味着“添加一个10像素的右边缘插入”,这对于普通(自定义)按钮也会使尺寸更大10像素。

似乎UIButton为标准信息按钮返回固定大小,忽略任何插入。您的代码通过影响contentRectForBounds:和imageRectForContentRect:方法“起作用”,这些方法会更改绘制图标的位置,但实际上不会更改按钮的大小。我怀疑图标是在按钮外面绘制的,这可能意味着“可触摸”的矩形是错误的(但是工具栏似乎增加了普通UIBarButtonItems的触摸范围,所以可能没关系)。