我想在 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),工作正常……这对我来说是个谜,完全迷失在这里。这里需要对可能的原因进行一些认真的澄清:我当前的项目很大,我无法在这里发布所有代码......