4

我想在 XCode 中为 UIToolbar(和 UIToolbar 的自定义背景颜色)创建自定义按钮。

到目前为止,我是这样完成的:创建 UIButton,然后为其设置图像,然后将其拖到 UIToolbar。在此之后它变成了 UIBarButtonItem,但它仍然有一个图像,所以对我来说没问题。

问题是,由于某种原因,按钮的图像变得比原始图像更暗(我可以看到它,因为我的工具栏背景与按钮的背景完全相同),但是当我按下按钮时,我看到它的图像变成了原始图像 -喜欢,然后在一秒钟后转回更暗的那个。

我已经尝试按照这个问题中所说的那样做:UIButton 中的图像比原始图像更暗,在 XCode 中设置突出显示的图像,但在此之后它完全停止了“更改为原始图像”。

那么,我该如何解决呢?如果 XCode 有办法做到这一点,我真的不想在代码中引入一些这样的 GUI 东西......任何帮助将不胜感激。

编辑:

这是正在发生的事情的屏幕截图:

工具栏和栏项的截图

这就是工具栏背景+按钮图像组合的样子:

在此处输入图像描述

现在我用这样的代码做到了:

@implementation UIBarButtonItem (CustomView)
+ (UIBarButtonItem*) barItemWithImage:(UIImage *)image target:(id)target action:(SEL)action
{    
    UIButton* button = [UIButton buttonWithType:UIButtonTypeCustom];
    button.bounds = CGRectMake(0, 0, image.size.width, image.size.height);
    [button setImage:image forState:UIControlStateNormal];
    [button addTarget:target action:action forControlEvents:UIControlEventTouchUpInside];

    UIBarButtonItem* item = [[self alloc] initWithCustomView:button];
    return item;
}
@end

和调用代码:

UIBarButtonItem *item =[UIBarButtonItem barItemWithImage:[UIImage imageNamed:@"settings"] target:nil action:nil];
[self.bottomBar setItems:@[item]];

对于工具栏背景,我使用以下代码:

[[UIToolbar appearance] setBackgroundImage:[UIImage imageNamed:@"toolbar_background"]
                        forToolbarPosition:UIToolbarPositionAny
                                barMetrics:UIBarMetricsDefault];

问题还是一样...

编辑2:

哇,看起来实际上 UIToolbar 比原来的要轻...

编辑 3:

好。创建了新项目并测试了 XCode 故事板方式(使用 UIButton),工作正常……这对我来说是个谜,完全迷失在这里。这里需要对可能的原因进行一些认真的澄清:我当前的项目很大,我无法在这里发布所有代码......

4

1 回答 1

0

好吧,既然没有人回答,我只会说我创建了一个新项目并且问题消失了。

但它再次发生,我完全不知道为什么。我做了一件非常懒惰和糟糕的事情,并在某些图像编辑器中为那个不幸的按钮更改了图像亮度 =D

于 2013-01-10T23:38:41.987 回答