【发布时间】:2012-12-31 12:24:34
【问题描述】:
我想在 XCode 中为 UIToolbar 创建自定义按钮(以及 UIToolbar 的自定义背景颜色)。
到目前为止,我是这样完成的:创建 UIButton,然后为其设置图像,然后将其拖到 UIToolbar。之后它变成了 UIBarButtonItem,但它仍然有一个图像,所以对我来说没问题。
问题是,由于某种原因,按钮的图像比原始图像更暗(我可以看到它,因为我的工具栏背景与按钮的背景完全相同),但是当我按下按钮时,我看到它的图像变成原来的样子,然后一秒钟后又变回更暗的那个。
我已经尝试按照这个问题中所说的去做:Image in UIButton is darker tharn original,在 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),工作正常……这对我来说是个谜,完全迷失在这里。这里需要认真澄清一下可能的原因:我当前的项目很大,我无法在此处发布所有代码...
【问题讨论】:
-
“在 Xcode 中”是指“使用 Cocoa Touch API”吗? Xcode 与此完全无关。
-
好吧,我不写任何代码,只是改变对象的偏好,所以,基本上,我在 XCode 中这样做:)
-
Anything?.. 这真的很奇怪,它在一个新项目中有效,而在我的实际项目中却没有。哪里可能有问题?任何帮助将不胜感激。
标签: objective-c ios xcode cocoa-touch uibarbuttonitem