Как реализовать подсветку на UIImage, как это делает UIButton при нажатии? - PullRequest
19 голосов
/ 13 января 2011

Мне нужно повторить эффект, который UIButton оказывает на изображение при нажатии, выделение. См:

alt text

Оригинальный PNG - квадрат с альфа-фоном. Когда я устанавливаю его как изображение UIButton, оно автоматически применяет эффект к не альфа-пикселям изображения.

Как сделать этот эффект?

1 Ответ

49 голосов
/ 13 января 2011

Этого можно добиться с помощью простой категории в UIImage:

@interface UIImage (Tint)

- (UIImage *)tintedImageUsingColor:(UIColor *)tintColor;

@end

@implementation UIImage (Tint)

- (UIImage *)tintedImageUsingColor:(UIColor *)tintColor {
  UIGraphicsBeginImageContextWithOptions(self.size, NO, self.scale);
  CGRect drawRect = CGRectMake(0, 0, self.size.width, self.size.height);
  [self drawInRect:drawRect];
  [tintColor set];
  UIRectFillUsingBlendMode(drawRect, kCGBlendModeSourceAtop);
  UIImage *tintedImage = UIGraphicsGetImageFromCurrentImageContext();
  UIGraphicsEndImageContext();
  return tintedImage;
}

@end

Для эффекта, показанного выше, вы должны передать что-то вроде [UIColor colorWithWhite:0.0 alpha:0.3] в качестве параметра tintColor (поэкспериментируйте со значением альфа).

...