UIToolbar类别drawRect:不起作用

时间:2010-11-02 07:33:20

标签: iphone objective-c uisearchbar uitoolbar categories

我尝试了以下内容:

@implementation UIToolbar (Image)

-(void)drawRect:(CGRect)rect {
    UIImage *img  = [UIImage imageNamed: @"navigationBar.png"];
    [img drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}

@end

没有任何成功,但它完全适用于UINavigationBar + Image的完全相同的代码。

没有为UIToolbar调用drawRect方法,为什么会这样?

1 个答案:

答案 0 :(得分:0)

我找到了解决方案

  

对于UIToolBar,如果你在UINavigationController中使用它,你还需要覆盖drawLayer:inContext :,因为这似乎是用来代替drawRect:当在导航控制器中使用时,出于一些奇怪的原因。

来源:http://atastypixel.com/blog/making-uitoolbar-and-uinavigationbars-background-totally-transparent/

所以我实现了- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx

- (void)drawLayer:(CALayer *)layer inContext:(CGContextRef)ctx {
    CALayer *imgLayer = [[CALayer alloc] init];
    [imgLayer setContents:(id)[[UIImage imageNamed: @"toolbar.png"] CGImage]];
    [imgLayer setBounds:CGRectMake(0.0f, 0.0f, self.frame.size.width, self.frame.size.height)];
    [imgLayer setPosition:CGPointMake(self.bounds.size.width/2,self.bounds.size.height/2)];
    [layer insertSublayer:imgLayer atIndex:0];
}