使UIToolBar和UISearchBar具有哑光黑色背景

时间:2012-07-23 23:00:00

标签: ios ios5 uikit uitoolbar

我可以在不覆盖drawRect方法的情况下执行此操作吗?

我尝试了以下内容:

UIImage *navBarImage = [[UIImage imageNamed:@"image_navbg.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(5, 5, 5, 5)];
[self.descriptionBar setBackgroundColor:[UIColor colorWithPatternImage:navBarImage]];
[self.bottomBar setBackgroundColor:[UIColor colorWithPatternImage:navBarImage]];

其中image_navbg.png是一个实心的哑光黑色方块。我得到的结果仍然是黑灰色渐变。

同样设置这些并没有帮助:

[self.descriptionBar setTranslucent:YES];
[self.bottomBar setTranslucent:YES];

3 个答案:

答案 0 :(得分:3)

我想对导航控制器的内置工具栏做同样的事情。你用以下方式揭示它:

[self.navigationController setToolbarHidden:NO];

为了删除类型工具栏上的渐变(至少在iOS 4及更早版本中),我成功使用了以下技术。首先,我将其添加到我的appDelegate标题:

@interface MyToolbar : UIToolbar {}

- (void)drawRect:(CGRect)rect;

@end

然后我将其添加到我的appDelegate .m文件

@implementation MyToolbar

- (void)drawRect:(CGRect)rect {
    UIColor *colorTabBlack = [UIColor colorWithRed:0 green:0 blue:0 alpha:1];
    CGContextRef context = UIGraphicsGetCurrentContext();
    CGContextSetFillColor(context, CGColorGetComponents( [colorTabBlack CGColor]));
    CGContextFillRect(context, rect);
}
@end

然后在IB中我将(现在可见的)工具栏的类切换为“MyToolbar” - 我花了很长时间才弄清楚这一点,这就是我发布它的原因。希望它可以帮助别人!

答案 1 :(得分:2)

如果您的目标是iOS 5,请使用UIAppearance - 不要再覆盖-drawRect:

答案 2 :(得分:0)

这就是我这样做的方式。对我来说很棒。您可能必须在子视图中尝试不同的索引。

// Change color of searchbar
[[self.searchbar.subviews objectAtIndex:0] removeFromSuperview];
self.searchbar.backgroundColor = [UIColor blackColor];

// Change color of toolbar
[[self.toolbar.subviews objectAtIndex:0] removeFromSuperview];
self.toolbar.backgroundColor = [UIColor blackColor];