2010-08-17 57 views
3

我有一个UIToolbar,我用自己的背景图像进行了自定义。因此,内置的UIBarButtonItem外观对我来说不起作用,所以我使用的图像已经准备好显示在栏中。我创建这个方法的自定义按钮项:在UIToolbar上用自定义图像按钮命中目标不正确

+ (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的边缘,但插页从侧面:

http://skitch.com/andpoul/d1p8g/hit-targets

任何帮助,不胜感激!

回答

0

我认为你将不得不去的唯一途径是(通过添加一些由左一,右换了又换图像),以使更广泛的按钮和调整大小...

+0

尽管按钮变宽也无济于事,因为左侧和右侧仍然有空间。 – 2010-08-19 17:42:32

1

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

一个蹩脚的黑客是为了使工具栏更宽(所以它粘在屏幕外),并添加透明的边缘到背景图像进行补偿。这使按钮更靠近屏幕边缘。

另一种方法就是使用带有UIButton子视图的UIImageView。

+1

这是我决定的蹩脚黑客。我知道这很糟糕,但是,嘿,解决了这个问题。 在我的UIToolbar的子类中,我调整了layoutSubviews中按钮的框架,使其更加合理。我试图保守,所以在未来的操作系统上它不会完全吃掉它。 – 2010-08-19 17:58:33