我设置UIViewController
以在UINavigationItem
的右侧显示信息按钮,如下所示:
UIButton *infoButton = [UIButton buttonWithType:UIButtonTypeInfoLight];
[infoButton addTarget:self action:@selector(toggleAboutView) forControlEvents:UIControlEventTouchUpInside];
self.navigationItem.rightBarButtonItem = [[[UIBarButtonItem alloc] initWithCustomView:infoButton] autorelease];
完美无缺,但唯一的问题是我在按钮右侧留下了很少甚至没有空间,看起来很丑陋:
按钮是否有任何方法可以从右侧移动约5 px?
感谢。
答案 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的触摸范围,所以可能没关系)。