所以我遵循了一个教程,它允许我将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项目,即工具栏是黑色的是,但是黑色超过了所有工具栏项目,因此它们不可见。
有解决方法吗?
感谢。
答案 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);