使用自定义图像按钮在UIToolbar上按下目标是不正确的

时间:2010-08-17 19:42:19

标签: iphone uibarbuttonitem uitoolbar

我有一个UIToolbar,我用我自己的背景图片定制。因此,内置的UIBarButtonItem外观对我来说不起作用,因此我使用的是已准备好在条形图中显示的图像。我用这种方法创建了一个自定义按钮项:

+ (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

任何帮助都非常感谢!

2 个答案:

答案 0 :(得分:1)

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

蹩脚的黑客攻击是让工具栏更宽(因此它会粘在屏幕外)并为背景图像添加透明边缘以进行补偿。这使按钮更靠近屏幕边缘。

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

答案 1 :(得分:0)

我认为你必须走的唯一方法就是让按钮更宽(通过从左边添加一个而另一个更改图像来改变图像)并调整尺寸......