UIButtonの背景色を簡単設定
UIButtonの背景色を変えるのに、一々画像作るの面倒だな〜と思ってたら、UIButtonに背景色を設定する | 404 odakoh Not Foundで、「プログラム内で画像作っちゃおう」って感じでやっていたので、自分用にアレンジしてみました。
元ネタ
・UIColor指定で背景色画像作成
変更点
・カテゴリ使ってUIButtonを拡張
・色指定を@"RRGGBB"にしたIFを追加
で、以下がその実装です。
// UIButton+BGColor.h @interface UIButton (BGColor) - (void)setBackgroundColor:(UIColor *)color forState:(UIControlState)state; - (void)setBackgroundColorString:(NSString *)colorStr forState:(UIControlState)state; @end
// UIButton+BGColor.m #import "UIButton+BGColor.h" #import <QuartzCore/QuartzCore.h> #import "UIColor-Expanded.h" @implementation UIButton (BGColor) - (void)setBackgroundColor:(UIColor *)color forState:(UIControlState)state { CGRect buttonSize = CGRectMake(0, 0, self.frame.size.width, self.frame.size.height); UIView *bgView = [[[UIView alloc] initWithFrame:buttonSize] autorelease]; bgView.layer.cornerRadius = 5; bgView.clipsToBounds = true; bgView.backgroundColor = color; UIGraphicsBeginImageContext(self.frame.size); [bgView.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage *screenImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); [self setBackgroundImage:screenImage forState:state]; } - (void)setBackgroundColorString:(NSString *)colorStr forState:(UIControlState)state { UIColor *color = [UIColor colorWithHexString:colorStr]; [self setBackgroundColor:color forState:state]; } @end
2つ目のメソッドが見ての通り文字列での背景色指定ですが、これいらない方は、UIColor-Expanded.hが不要です。というか、UIColor-Expanded.h取ってくるの面倒な方は省くと良いですね。
UIColor-Expanded.hによるUIColorの拡張については、以前の記事をどうぞ。もの自体はこちらで公開されています。
そして、使い方。
[button1 setBackgroundColor:[UIColor blueColor] forState:UIControlStateNormal]; [button2 setBackgroundColorString:@"ff0000" forState:UIControlStateNormal];