使 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 背景颜色问题