2011-01-13 7 views
19

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

alt text

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

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

ответ

49

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

+0

Отличный материал !!!! – hfossli

+1

В отличие от некоторых других решений, плавающих вокруг SO, это имеет хороший эффект не окрашивания всего прямоугольника. Хорошее использование UIRectFillUsingBlendMode() –

+0

Отличный ответ, спасибо. – titaniumdecoy

 Смежные вопросы

  • Нет связанных вопросов^_^