2011-04-13 72 views
2

因此,我遵循了一個教程,該教程允許我繼承UIToolbar並將圖像作爲UIToolbar的自定義背景。如何以編程方式將平面背景UIColor渲染爲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方法?

必須製作一個320 x 44像素高度的平黑色背景圖像,並使用上面的代碼看起來像極端的開銷當[UIColor blackColor]可用?我只是不確定如何在這裏實現它。

我想過做這樣的事情,而不是:

- (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項目,我以後再添加即工具欄是黑色的,是的,但黑色超過所有工具欄項目,因此它們不可見。

是否有解決方法?

謝謝。

+1

覆蓋'drawRect:'這樣的方法是一個**現象不佳的IDEA **。 – 2011-04-15 16:49:29

回答

3

重寫-drawRect:方法,在你的第一個例子,但不是繪製圖像,使用UIRectFill方法,像這樣:

[[UIColor blackColor] setFill]; 
UIRectFill(self.bounds); 
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];