我正在子类化UIToolBar,下面是我如何覆盖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像素(对于retina是88像素)。下半部分不应该是黑色的。
通过子类化UIToolBar和重写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)];
}