2011-09-02 63 views
0

我一直試圖用[UIColor clearColor]UIToolbar試圖讓一個自定義控制界面更適合一個「機械」應用程序(Think按鈕,你會在70年代的電影中看到的)。iOS - [UIColor clearColor]和UIToolbars

發生了什麼事情是,當我設置工具欄clearColor它將它變成啞黑色。背後的圖像是紅色,棕褐色和黑色,所以我確信它不能按預期工作。

我看到的一個區別是,我在導航控制器上使用工具欄,而不是獨立使用UIToolbar

代碼行是

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

和我的上導航欄(即設置在另一視圖中)是UIBarStyleBlackTranslucent,會這樣拋它關閉?

任何幫助追蹤這將是巨大的。

+1

小評論:在Objective-C,你應該使用YES/NO而不是真/假。後者有效,但不推薦使用。 – gcamp

回答

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)]; 
+0

這似乎只修改頂部的導航欄,而不是UIToolbar ...需要挖掘一下,看看我是否可以完成這項工作。 – Mytheral

+0

對。我確定了答案,試試。 – Jano