如何以编程方式呈现平面背景UIColor作为UIToolbar的背景?

时间:2011-04-13 21:36:02

标签: iphone cocoa-touch ios4 uitoolbar

所以我遵循了一个教程,它允许我将UIToolbar子类化并将图像绘制为UIToolbar的自定义背景。

代码是这样的:

// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
- (void)drawRect:(CGRect)rect
{
    UIImage *backgroundImage = [UIImage imageNamed:@"toolbar_background.png"];
    [backgroundImage drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}

这完美无瑕。考虑到我只想让我的工具栏背景变成平面颜色。基本上像 [UIColor blackColor] ,是否有更简单的方法在drawRect方法中执行此操作?

[UIColor blackColor] 可用时,必须制作一个320 x 44像素高度的平坦黑色背景图像,并将其与上述代码一起使用似乎是极端的开销吗?我只是不确定如何在这里实现它。

我想过做这样的事情:

- (void)drawRect:(CGRect)rect
{
  UIView *test = [[UIView alloc] initWithFrame:CGRectMake(0,0,self.frame.size.width,self.frame.size.height)];

  test.backgroundColor = [UIColor blackColor];
  [self addSubview:test];
}

但这不起作用,因为UIView COVERS 我后来添加的所有UIToolbar项目,即工具栏是黑色的是,但是黑色超过了所有工具栏项目,因此它们不可见。

有解决方法吗?

感谢。

2 个答案:

答案 0 :(得分:11)

您可以创建平面UIToolbar而无需创建子类。只需设置BackgroundColor,BackgroundImage和ShadowImage。

[toolbar setBackgroundColor:[UIColor blackColor]];
[toolbar setBackgroundImage:[[UIImage alloc] init] forToolbarPosition:UIToolbarPositionAny barMetrics:UIBarMetricsDefault];
[toolbar setShadowImage:[[UIImage alloc] init] forToolbarPosition:UIToolbarPositionAny];

答案 1 :(得分:3)

如第一个示例所示覆盖-drawRect:方法,但不使用绘制图像,而是使用UIRectFill方法,如下所示:

[[UIColor blackColor] setFill];
UIRectFill(self.bounds);