2011-01-13 10 views
19

मुझे प्रभाव डालने की आवश्यकता है कि UIButton टैप किए जाने पर छवि पर करता है, हाइलाइटिंग। देखें:UIImage पर हाइलाइटिंग को कार्यान्वित करने के तरीके जैसे UIButton टैप करते समय करता है?

alt text

मूल पीएनजी अल्फा पृष्ठभूमि के साथ एक वर्ग है। जब मैं इसे 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 

ऊपर दिखाए गए प्रभाव के लिए, आप tintColor पैरामीटर (अल्फा मूल्य के साथ प्रयोग) के रूप में [UIColor colorWithWhite:0.0 alpha:0.3] की तरह कुछ दे देते हैं।

+0

ग्रेट सामान !!!! – hfossli

+1

एसओ के आसपास तैरने वाले कुछ अन्य समाधानों के विपरीत, इसका पूरा प्रभाव रंग नहीं होने का अच्छा प्रभाव पड़ता है। UIRectFillUsingBlendMode का अच्छा उपयोग() –

+0

ग्रेट उत्तर, धन्यवाद। – titaniumdecoy

संबंधित मुद्दे