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

Posted

技术标签:

【中文标题】使 UIToolBar 和 UISearchBar 具有哑光黑色背景【英文标题】:Making UIToolBar ans UISearchBar have a matte black background 【发布时间】:2012-07-23 23:00:00 【问题描述】:

我可以在不覆盖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];

【问题讨论】:

检查这个答案 - ***.com/questions/4904877/… 【参考方案1】:

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

[self.navigationController setToolbarHidden:NO];

为了移除 this 类工具栏上的渐变(至少在 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”——我花了很长时间才弄清楚这一点,这就是我发布它的原因。希望它可以帮助别人!

【讨论】:

【参考方案2】:

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

【讨论】:

【参考方案3】:

我就是这样做的。对我来说效果很好。您可能需要在子视图中尝试不同的索引。

// 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];

【讨论】:

以上是关于使 UIToolBar 和 UISearchBar 具有哑光黑色背景的主要内容,如果未能解决你的问题,请参考以下文章

UIToolbar 中的 UISearchBar 不会显示取消按钮

Black Opaque UIToolbar 和 UISearchBar 看起来差别太大了

当 UISearchBar 变为活动状态时调整 UIToolbar 的大小

UIToolbar 内部的 UIView 内部的 UISearchBar 背景颜色问题

UIToolbar中的iOS8 UISearchBar没有左填充

为啥从搜索栏退出键盘后会留下 UIToolbar?