2012-02-26

背景の透明なUIToolbarをつくる

背景が透明なUIToolbarをつくるには、alphaを設定してもダメです。これだと、UIToolbarの上にのってるボタンまで透明になってしまいます。

では、
toolbar.backgroundColor = [UIColor clearColor];
toolbar.opaque = NO;
toolbar.translucent = YES;
という具合にやればいいかというと、これもダメです。普通に背景が表示されてしまいます。

stackoverflowで解決策が紹介されていました。UIToolbarを継承して新しいクラスをつくればいいようです。次のような具合にやります。

TransparentToolbar.h
@interface TransparentToolbar : UIToolbar
@end

TransparentToolbar.m
@implementation TransparentToolbar

// Override draw rect to avoid
// background coloring
- (void)drawRect:(CGRect)rect {
    // do nothing in here
}

// Set properties to make background
// translucent.
- (void) applyTranslucentBackground
{
    self.backgroundColor = [UIColor clearColor];
    self.opaque = NO;
    self.translucent = YES;
}

// Override init.
- (id) init
{
    self = [super init];
    [self applyTranslucentBackground];
    return self;
}

// Override initWithFrame.
- (id) initWithFrame:(CGRect) frame
{
    self = [super initWithFrame:frame];
    [self applyTranslucentBackground];
    return self;
}

@end

0 件のコメント: