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