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

skå*_*fan 2 iphone cocoa-touch uitoolbar ios4

所以我遵循了一个教程,它允许我将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)];
}
Run Code Online (Sandbox Code Playgroud)

这完美无瑕.考虑到我只想让我的工具栏背景变成平面颜色.基本上像[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];
}
Run Code Online (Sandbox Code Playgroud)

但是,这并不工作,因为随后的UIView COVERS所有UIToolbar项目,我以后再添加即工具栏是黑色的,是的,但黑色是凌驾所有的工具栏项目,使他们不可见.

有解决方法吗?

谢谢.

pre*_*pre 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];
Run Code Online (Sandbox Code Playgroud)