9

我有一个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?

谢谢。

4

2 回答 2

17
infoButton.contentEdgeInsets = UIEdgeInsetsMake(0, -10, 0, 10);
于 2010-09-28T09:20:50.993 回答
14

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

infoButton.contentEdgeInsets = (UIEdgeInsets){.right=10};

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

如果这不起作用,最简单的方法可能是将其粘贴在 UIView 中。

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

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

于 2010-09-12T06:14:24.257 回答