有没有办法将 UIBarButtonItem 的可点击区域设为 44x44?

Posted

技术标签:

【中文标题】有没有办法将 UIBarButtonItem 的可点击区域设为 44x44?【英文标题】:Is there a way to make the tappable area for the UIBarButtonItem as 44x44? 【发布时间】:2012-03-14 16:38:43 【问题描述】:

根据 HIG,可点击按钮的大小应为 44x44。现在我有以下内容:

UIButton * stop = [UIButton buttonWithType:UIButtonTypeCustom];

        [stop setSize:CGSizeMake(15, 18)];


    [stop setBackgroundImage:[UIImage imageNamed:@"stop-gray.png"] forState:UIControlStateNormal];
    [stop addTarget:self action:@selector(stopPage:) forControlEvents:UIControlEventTouchUpInside];
    stopButton_ = [[UIBarButtonItem alloc] initWithCustomView:stop];

UIBarButtonItem 将被放置在 iphone 的 UIToolbar 中。当您注意到图像的大小小于 15、18 时。或者我是否必须创建一个具有空白空间的新图标,以便大小为 44x44,ios 世界中的最佳做法是什么?

【问题讨论】:

【参考方案1】:

为什么要使用自定义视图?如果您只想要按钮上的自定义图像,请使用-[UIBarButtonItem initWithImage:style:target:action:],您将获得正确的可点击区域和标准系统行为。

如果您确实需要自定义视图,则无需更改图像以留下空白空间...只需设置 contentHorizontalAlignmentcontentVerticalAlignment 以便图像居中而不是填充视图,然后根据需要调整视图大小。

【讨论】:

问题是我的图像颜色是灰色的,当我这样做时,背面是白色的 您的问题始于 HIG 推荐... HIG also says 工具栏图标应该是白色的。如果您将图标变灰以表示它现在无法使用,为什么不使用 UIBarButtonItem 上的 enabled 属性? 这是我为它准备的自定义灰色 而且它没有被使用,因为它被禁用了..它只是不能使用【参考方案2】:

我认为带有透明背景和内部较小图像的 44x44 图像是最简单的方法。

【讨论】:

@rickster:为什么你认为对齐更好? 不一定更好——主要是我指出了这一点,因为 OP 询问您是否必须创建一个更大的空白空间图像,或者是否有其他方法。但是,至少有一个支持使用对齐的论点:用透明图像填充的大图像是一个(可能是微不足道的)更大的文件。

以上是关于有没有办法将 UIBarButtonItem 的可点击区域设为 44x44?的主要内容,如果未能解决你的问题,请参考以下文章

带有“更多”按钮样式的 UIBarButtonItem

UIToolBar 上的 UIBarbuttonItem 的动作没有被调用

UIBarButtonItem 带有图像和文本以及边框?

我怎样才能拥有一个同时包含图像和文本的 UIBarButtonItem?

反转 UIBarButtonItem“播放”以用作后退按钮?

UIToolBar 具有降低的 alpha,希望 UIBarButtonItem 具有 alpha 1