iOS - [UIColor clearColor]和UIToolbars

时间:2011-09-02 11:22:43

标签: ios uinavigationcontroller uitoolbar uicolor

我一直在尝试将[UIColor clearColor]UIToolbar一起使用,以尝试使自定义控件界面更适合“机械”应用程序(您可以在70年代的电影中看到的想法按钮) )。

当我将工具栏设置为clearColor时,它正在将其变为哑光黑色。它背后的图像是红色,棕褐色和黑色,所以我确定它没有按预期工作。

我看到的一个区别是我在导航控制器上使用工具栏而不是独立UIToolbar

代码行是

self.navigationController.toolbar.translucent = YES;
self.navigationController.toolbar.backgroundColor = [UIColor clearColor];

我的上方导航栏(在另一个视图中设置)是UIBarStyleBlackTranslucent,这可能会把它丢掉吗?

任何跟踪此功能的帮助都会很棒。

1 个答案:

答案 0 :(得分:1)

您可以使用以下代码为导航控制器的工具栏设置透明背景:

// UIToolbar.h
@interface UIToolbar (Transparency)
- (void)drawRect:(CGRect)rect;
@end
// UIToolbar.m
#import "TransparentToolbar.h"
@implementation UIToolbar (Transparency)
- (void)drawRect:(CGRect)rect {
    [[UIColor clearColor] set];
    CGContextFillRect(UIGraphicsGetCurrentContext(), rect);
}
@end

用法:

// bar_bottom_bumped.png is a toolbar image with transparency
UIImage *bg = [UIImage imageNamed:@"bar_bottom_bumped.png"];
UIImageView *background = [[UIImageView alloc] initWithImage:bg];
background.frame = self.navigationController.toolbar.bounds;
background.autoresizingMask = UIViewAutoresizingFlexibleWidth;
BOOL isIOS5 = [[[UIDevice currentDevice] systemVersion] intValue] >= 5;
self.navigationController.toolbar.backgroundColor = [UIColor clearColor];
[self.navigationController.toolbar insertSubview:background atIndex: (isIOS5 ? 1 : 0)];