当UIToolBar具有自定义背景的子类时,工具栏的下半部分是黑色的?

我是inheritanceUIToolBar,这里是我如何重写UIToolBar的drawRect方法:

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

该应用程序使用通过initWithNavigationBarClass方法初始化的UINavigationController范例。

问题是工具栏的下半部分是黑色的? UIToolBar_Background.png高度为44像素(或视网膜为88)。 它不应该是下半部分黑色。

通过inheritanceUIToolBar并重写drawRect,可以消除一些UIToolBar自己的绘图。 为什么不使用外观API来设置背景图像:

 [[UIToolbar appearance] setBackgroundImage:[UIImage imageNamed:@"UIToolBar_Background.png"] forToolbarPosition:UIToolbarPositionBottom barMetrics:UIBarMetricsDefault]; 

或者,您可以使用子类化路线,只要确保在进行自己的绘制之前调用[super drawrect:rect]:

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