Подтвердить что ты не робот

Как реализовать подсветку на UIImage, например, UIButton, когда используется?

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

alt text

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

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

4b9b3361

Ответ 1

Вы можете достичь этого с помощью простой категории в 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 (эксперимент с альфа-значением).