UIToolbar категорий drawRect: не будет работать - PullRequest
0 голосов
/ 02 ноября 2010

Я пробовал следующее:

@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.

Метод drawRect не вызываетсядля UIToolbar, почему это?

1 Ответ

0 голосов
/ 02 ноября 2010

Я нашел решение

Для 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];
}
...