Iphone 使用自定义图像按钮击中UIToolbar上的目标不正确

Iphone 使用自定义图像按钮击中UIToolbar上的目标不正确,iphone,uibarbuttonitem,uitoolbar,Iphone,Uibarbuttonitem,Uitoolbar,我有一个UIToolbar,我用自己的背景图像定制了它。因此,内置的uibarbuttonite外观对我来说不起作用,所以我使用的是已经准备好在酒吧中展示的图像。我使用此方法创建自定义按钮项: + (UIBarButtonItem *)customWithImage:(UIImage *)image enabled:(BOOL)enabled target:(id)target action:(SEL)selector { UIButton *button = [UIButton buttonW

我有一个UIToolbar,我用自己的背景图像定制了它。因此,内置的uibarbuttonite外观对我来说不起作用,所以我使用的是已经准备好在酒吧中展示的图像。我使用此方法创建自定义按钮项:

+ (UIBarButtonItem *)customWithImage:(UIImage *)image enabled:(BOOL)enabled target:(id)target action:(SEL)selector {
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    //I've tried different values for the frame here, but no luck
button.frame = CGRectMake(0, 0, 44, 44);
button.enabled = enabled;
button.showsTouchWhenHighlighted = YES;
[button addTarget:target action:selector forControlEvents:UIControlEventTouchUpInside];
[button setImage:image forState:UIControlStateNormal];

UIBarButtonItem *it = [[[UIBarButtonItem alloc] initWithCustomView:button] autorelease];
    //Tried changing this, to no avail
it.width = 32.f;
return it;
我有一个按钮在左边,一个在右边,我正试图使它,如果你点击最左边或最右边的UIToolbar,相应的按钮被点击。但是,使用这些自定义按钮,命中目标不会一直延伸到UIToolbar的边缘,而是从侧面插入:


非常感谢您的帮助

我认为唯一的办法就是让按钮变宽(通过从左到右分别添加一些按钮来改变图像),并调整大小

如果使用自定义视图,UIBarButtonItem.width可能会被忽略(它可能只使用视图的宽度)

一个蹩脚的做法是使工具栏更宽(因此它会粘在屏幕外),并在背景图像中添加透明边缘以进行补偿。这使按钮更靠近屏幕边缘


另一种选择是将UIImageView与UIButton子视图一起使用。

但是,将按钮加宽并没有帮助,因为左右两侧仍然有空间。下面是我决定采用的蹩脚方法。我知道这很糟糕,但是嘿,解决了这个问题。在UIToolbar的子类中,我调整了LayoutSubView中按钮的框架,使其更加合理。我尽量保守,这样在未来的操作系统上就不会完全被它吃掉。