banner
李大仁博客

李大仁博客

天地虽大,但有一念向善,心存良知,虽凡夫俗子,皆可为圣贤。

iOS開発において、背景が透明またはカスタム画像を含むUIToolbarの作成

iOS システムには、UIToolbar のスタイルがシンプルで、開発や特定の目的に必要な要件を満たすことができないことがよくあります。例えば、完全に透明な UIToolbar を設定したり、カスタムの UIToolbar の背景色を設定したりする必要がある場合、UIToolbar を個別にカスタマイズする必要があります。UIToolbar の背景を透明にするには、backgroundColor を [UIColor clearColor] に設定するだけです。UIToolbar の背景色を個別にカスタマイズするには、UIToolbar を継承して独自の実装を行う必要があります。背景色を直接変更する方法については、以下の方法 1 を参照してください。UIToolbar オブジェクトを継承して独自の実装を行う方法については、方法 2 を参照してください。

方法 1 iOS6.1 以前

// ボタンの tint 色をナビゲーションバーと同じにする
toolbar.tintColor = self.navigationController.navigationBar.tintColor;
toolbar.backgroundColor = [UIColor clearColor]; // 背景を透明にする
for (UIView *view in [rightToolbar subviews]) {
if ([view isKindOfClass:[UIImageView class]]) {
[view removeFromSuperview];
}
}

iOS7 以降

[self.toolbar setBackgroundImage:[UIImage new]
forToolbarPosition
barMetrics];
[self.toolbar setShadowImage:[UIImage new]
forToolbarPosition];

方法 2

// MyToolbar.h
@interface MyToolbar : UIToolbar

@end

// MyToolbar.m
@implementation MyToolbar

  • (id)initWithFrame:(CGRect)aRect {
    if ((self = [super initWithFrame])) {
    self.opaque = NO;
    self.backgroundColor = [UIColor clearColor]; // 背景を透明にする、ここで背景画像を設定することもできます
    //self.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"background"]];
    self.clearsContextBeforeDrawing = YES;
    }
    return self;
    }

  • (void)drawRect:(CGRect)rect {
    // 何もしない
    }

@end

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。