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



我正在子类化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)];
}

最新更新