我尝试了以下内容:
@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方法,为什么会这样?
答案 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];
}