开发者

iOS - [UIColor clearColor] and UIToolbars

开发者 https://www.devze.com 2023-04-01 07:43 出处:网络
I\'ve been attempting to use [UIColor clearColor] with UIToolbar in an attempt to make a custom control interface more fitting of a \"Mechanical\" application (Think buttons you would see in a Movie f

I've been attempting to use [UIColor clearColor] with UIToolbar in an attempt to make a custom control interface more fitting of a "Mechanical" application (Think buttons you would see in a Movie from the 70s).

What is happening is that when I set the toolbar to clearCol开发者_开发百科or it is turning it matte black. The image behind it is red, tan and black so I'm sure it's not working as intended.

One difference I see is that I'm using the toolbar on a nav controller and not a stand alone UIToolbar.

The lines of code are

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

and my upper navigation bar (that is setup in another view) is UIBarStyleBlackTranslucent, could this be throwing it off?

any help tracking this down would be great.


You can set a transparent background for the toolbar of your navigation controller with the following code:

// 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

Usage:

// 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

精彩评论

暂无评论...
验证码 换一张
取 消