问题描述
我正在继承 UIToolBar,这里是我如何覆盖 UIToolBar 的 drawRect
方法:
I'm subclassing UIToolBar, here is how I override the drawRect
method of UIToolBar:
- (void)drawRect:(CGRect)rect
{
UIImage *backgroundImage = [UIImage imageNamed:@"UIToolBar_Background.png"];
[backgroundImage drawInRect:CGRectMake(0, 0, self.frame.size.width, self.frame.size.height)];
}
该应用程序使用 UINavigationController 范式,该范式使用 initWithNavigationBarClass
方法初始化.
The app uses a UINavigationController paradigm initialized with initWithNavigationBarClass
method.
问题是工具栏的下半部分是黑色的?UIToolBar_Background.png 的高度为 44 像素(或视网膜为 88).它不应该有它的下半部分黑色.
The issue is that the bottom half of toolbar is black? The UIToolBar_Background.png is 44 pixels height (or 88 for retina). It should not have it's bottom half black.
推荐答案
通过继承 UIToolBar 并覆盖 drawRect,您可以消除一些 UIToolBar 自己的绘图.为什么不使用外观api来设置背景图片:
By subclassing UIToolBar and overriding drawRect, you eliminate some of UIToolBar's own drawing. Why not use the appearance api to set a background image:
[[UIToolbar appearance] setBackgroundImage:[UIImage imageNamed:@"UIToolBar_Background.png"]
forToolbarPosition:UIToolbarPositionBottom
barMetrics:UIBarMetricsDefault];
或者,您可以使用子类化路线,只需确保在进行自己的绘图之前调用 [super drawrect:rect]:
alternatively, you could use the subclassing route, just make sure you call [super drawrect:rect] before doing your own drawing:
- (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)];
}
这篇关于将 UIToolBar 子类化为具有自定义背景时,工具栏的下半部分是黑色的?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!