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

时间:2013-04-25 13:24:13

标签: ios uinavigationcontroller 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像素(视网膜为88像素)。它应该没有它的下半部黑色。

1 个答案:

答案 0 :(得分:0)

通过继承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)];
}