LoginSignup
4
4

More than 5 years have passed since last update.

setImageしたUIButtonをタップしたときに影を乗せたい

Posted at

UIButtonをUIButtonTypeCustomで作成する際に単純にbackgroundColor = [UIColor whiteColor] なんかのボタンを作ってしまうとタップした際に影が表示されず、押している感がなくなる事が多いと思います。

他にも、UIButtonにsetImageした場合も同様ですね。
そのためにデザイナーさんに逐一影の画像をお願いするのも手間ですし、余計な画像が増えてしまうので私は以下のようなClassを作成して動的にHighlightedへ指定するようにしています。

objective-c
#define UICOLOR_RGBA(R,G,B,A) [UIColor colorWithRed:R/255.0f green:G/255.0f blue:B/255.0f alpha:A]

/**
 *  指定したUIColorで生成したImageを返す
 */
+ (UIImage *)imageWithColor:(UIColor *)color
                       rect:(CGRect)rect
{
    UIGraphicsBeginImageContext(rect.size);
    [color setFill];
    UIRectFill(rect);
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    return newImage;
}

この関数を、適当なCommonClassに記述してどこからでも呼び出せるようにしています。
使い方は、例えば以下のような方法があります。

objective-c
    [self.myButton setBackgroundImage:[CHZCommon imageWithColor:UICOLOR_RGBA(0, 0, 0, 0.3f) rect:self.myButton.bounds] forState:UIControlStateHighlighted];

こうすると、タップしたときにいい感じに影を乗せる事ができると思います。
この関数には他にも応用的な使い方がいくらでもありますので、どこかに定義しておくと便利に使えると思います。

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4