दिलचस्प पोस्ट
कैसे व्यवहार में C + + लिंक काम करता है? ओपनसीवी बर्डसी दृश्य डेटा के बिना देखें लाइन-लपेटें ढूँढना सामग्री सुरक्षा नीति कैसे काम करती है? सी # .NET में App.config क्या है? इसका इस्तेमाल कैसे करें? पास सी # एएसपी.नेट सरणी को जावास्क्रिप्ट सरणी के लिए केवल एक घड़ी चक्र में 32 बिट इनपुट के लिए वर्गमूल कैसे प्राप्त करें? सर्विसलेट का 'प्रतिक्रिया पहले से ही प्रतिबद्ध' का कारण रिलेशनल डेटाबेस में पदानुक्रमित डेटा को संचय करने के लिए क्या विकल्प हैं? क्या एक जावा सरणी को हैशमैप कुंजी के रूप में इस्तेमाल किया जा सकता है अजगर – यदि एक सूची दूसरे का एक सबसेट है तो यह सत्यापित करना jQuery के चयनित रेडियो बटन का मूल्य मिलता है टेक्स्ट यूआरएल को कैसे बदलें और एचटीएमएल टैग्स में यूआरएल को बाहर कैसे करें? जावास्क्रिप्ट का उपयोग करके मैं तत्व को कैसे स्क्रॉल कर सकता हूं? खिलाड़ियों के लिए एक समय में मैं एक कार्ड कैसे बदल सकता हूं?

मैं आईओएस और वॉचकिट में छवि टिंटकॉलर कैसे बदल सकता / सकती हूं?

मेरे पास UIImageView नामक "theImageView" है, UIImage के साथ एक ही रंग (पारदर्शी पृष्ठभूमि) में सिर्फ नीचे दिए गए काले रंग के दिल की तरह। आईओएस 7+ नेविगेशन बार आइकन में इस्तेमाल टिंट विधि के अनुसार, मैं आईओएस 7 या इसके बाद के संस्करण में इस छवि के टिंट रंग को कैसे बदल सकता हूँ?

क्या यह विधि एक एप्पल वॉच ऐप के लिए वॉचकिट में भी काम कर सकती है?

यहां छवि विवरण दर्ज करें

वेब के समाधान से एकत्रित समाधान "मैं आईओएस और वॉचकिट में छवि टिंटकॉलर कैसे बदल सकता / सकती हूं?"

आईओएस
एक IOS ऐप के लिए, स्विफ्ट 3 में:

 theImageView.image = theImageView.image!.withRenderingMode(.alwaysTemplate) theImageView.tintColor = UIColor.red 

स्विफ्ट 2:

 theImageView.image = theImageView.image!.imageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate) theImageView.tintColor = UIColor.redColor() 

इस बीच, आधुनिक उद्देश्य-सी समाधान है:

 theImageView.image = [theImageView.image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; [theImageView setTintColor:[UIColor redColor]]; 

Watchkit
एप्पल वॉच ऐप्स के लिए वॉचकिट में, आप एक टेम्पलेट छवि के लिए टिंट रंग सेट कर सकते हैं।

  1. आपको अपनी वॉचकिट ऐप में एसेट कैटलॉग में अपनी छवि जोड़नी चाहिए, और एट्रिब्यूट इंस्पेक्टर में टेम्पलेट इमेज के रूप में प्रस्तुत करने के लिए इमेज सेट को सेट करना चाहिए। IPhone ऐप के विपरीत, आप वर्तमान में वॉचकिट एक्सटेंशन में कोड में टेम्पलेट रेंडरिंग सेट नहीं कर सकते।
  2. उस छवि को अपने ऐप के लिए इंटरफेस बिल्डर में अपने WKInterfaceImage में उपयोग करने के लिए सेट करें
  3. WKInterfaceImage के लिए अपने WKInterfaceController में एक IBOutlet बनाएँ 'theImage' कहा जाता है …

स्विफ्ट 3 में टिंट रंग सेट करने के लिए:

 theImage.setTintColor(UIColor.red) 

स्विफ्ट 2:

 theImage.setTintColor(UIColor.redColor()) 

उद्देश्य-सी में टिंट रंग सेट करने के लिए:

 [self.theImage setTintColor:[UIColor redColor]]; 

यदि आप एक टेम्पलेट छवि का उपयोग करते हैं और एक टिंट रंग लागू नहीं करते हैं, तो आपके वॉचकिट ऐप के लिए ग्लोबल टिंट लागू किया जाएगा। यदि आपने एक ग्लोबल टिंट सेट नहीं किया है, तो theImage को डिफ़ॉल्ट रूप से हल्के नीले रंग से रंग दिया जाएगा, जब टेम्प्लेट छवि के रूप में इस्तेमाल किया जाए

यहां एक ऐसी श्रेणी है जिसे चाल करना चाहिए

 @interface UIImage(Overlay) @end @implementation UIImage(Overlay) - (UIImage *)imageWithColor:(UIColor *)color1 { UIGraphicsBeginImageContextWithOptions(self.size, NO, self.scale); CGContextRef context = UIGraphicsGetCurrentContext(); CGContextTranslateCTM(context, 0, self.size.height); CGContextScaleCTM(context, 1.0, -1.0); CGContextSetBlendMode(context, kCGBlendModeNormal); CGRect rect = CGRectMake(0, 0, self.size.width, self.size.height); CGContextClipToMask(context, rect, self.CGImage); [color1 setFill]; CGContextFillRect(context, rect); UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return newImage; } @end 

तो आप ऐसा करेंगे:

 theImageView.image = [theImageView.image imageWithColor:[UIColor redColor]]; 

मुझे स्विफ्ट में एक extension का उपयोग करना था।

मैंने सोचा था कि मैं यह कैसे साझा किया होगा:

 extension UIImage { func imageWithColor(color1: UIColor) -> UIImage { UIGraphicsBeginImageContextWithOptions(self.size, false, self.scale) color1.setFill() let context = UIGraphicsGetCurrentContext() as CGContextRef CGContextTranslateCTM(context, 0, self.size.height) CGContextScaleCTM(context, 1.0, -1.0); CGContextSetBlendMode(context, CGBlendMode.Normal) let rect = CGRectMake(0, 0, self.size.width, self.size.height) as CGRect CGContextClipToMask(context, rect, self.CGImage) CGContextFillRect(context, rect) let newImage = UIGraphicsGetImageFromCurrentImageContext() as UIImage UIGraphicsEndImageContext() return newImage } } 

उपयोग:

theImageView.image = theImageView.image.imageWithColor(UIColor.redColor())

स्टोरीबोर्ड और छवि एसेट्स में आप इस दो को भी बदल सकते हैं:

टेम्पलेट छवि को रेंडर मोड को अपडेट करें

छवि परिसंपत्तियों में टेम्पलेट छवि को रेंडर मोड को अपडेट करें

दृश्यों में टिंट रंग अपडेट करें

दृश्यों में दृश्यों में टिंट रंग अपडेट करें

छवि का टिंट बदलें ( चित्र , शास्त्रीय छवि , फोटो ) इसका उपयोग करते हैं:

फ़ंक्शन टिंट इमेज स्विफ्ट 3:

यहां छवि विवरण दर्ज करें यहां छवि विवरण दर्ज करें

 import UIKit // MARK: - Extensions UIImage public extension UIImage { /// Tint, Colorize image with given tint color /// This is similar to Photoshop's "Color" layer blend mode /// This is perfect for non-greyscale source images, and images that /// have both highlights and shadows that should be preserved<br><br> /// white will stay white and black will stay black as the lightness of /// the image is preserved /// /// - Parameter TintColor: Tint color /// - Returns: Tinted image public func tintImage(with fillColor: UIColor) -> UIImage { return modifiedImage { context, rect in // draw black background - workaround to preserve color of partially transparent pixels context.setBlendMode(.normal) UIColor.black.setFill() context.fill(rect) // draw original image context.setBlendMode(.normal) context.draw(cgImage!, in: rect) // tint image (loosing alpha) - the luminosity of the original image is preserved context.setBlendMode(.color) fillColor.setFill() context.fill(rect) // mask by alpha values of original image context.setBlendMode(.destinationIn) context.draw(context.makeImage()!, in: rect) } } /// Tint pictogram with color /// Method work on single colors without fading, mainly for svg images /// /// - Parameter fillColor: TintColor: Tint color /// - Returns: Tinted image public func tintPictogram(with fillColor: UIColor) -> UIImage { return modifiedImage { context, rect in // draw tint color context.setBlendMode(.normal) fillColor.setFill() context.fill(rect) // mask by alpha values of original image context.setBlendMode(.destinationIn) context.draw(cgImage!, in: rect) } } /// Modified Image Context, apply modification on image /// /// - Parameter draw: (CGContext, CGRect) -> ()) /// - Returns: UIImage fileprivate func modifiedImage(_ draw: (CGContext, CGRect) -> ()) -> UIImage { // using scale correctly preserves retina images UIGraphicsBeginImageContextWithOptions(size, false, scale) let context: CGContext! = UIGraphicsGetCurrentContext() assert(context != nil) // correctly rotate image context.translateBy(x: 0, y: size.height) context.scaleBy(x: 1.0, y: -1.0) let rect = CGRect(x: 0.0, y: 0.0, width: size.width, height: size.height) draw(context, rect) let image = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() return image! } } } 

छवि का टिंट बदलें ( एसवीजी , अनन्य रंग ) संपत्ति में टेम्पलेट छवि के साथ इसका इस्तेमाल करते हैं:

फ़ंक्शन टिंटचित्रलेखन स्विफ्ट 3:

यहां छवि विवरण दर्ज करें यहां छवि विवरण दर्ज करें

 import UIKit // MARK: - Extensions UIImage public extension UIImage { /// Tint pictogram with color /// Method work on single colors without fading, mainly for svg images /// /// - Parameter fillColor: TintColor: Tint color /// - Returns: Tinted image public func tintPictogram(with fillColor: UIColor) -> UIImage { return modifiedImage { context, rect in // draw tint color context.setBlendMode(.normal) fillColor.setFill() context.fill(rect) // mask by alpha values of original image context.setBlendMode(.destinationIn) context.draw(cgImage!, in: rect) } } /// Modified Image Context, apply modification on image /// /// - Parameter draw: (CGContext, CGRect) -> ()) /// - Returns: UIImage fileprivate func modifiedImage(_ draw: (CGContext, CGRect) -> ()) -> UIImage { // using scale correctly preserves retina images UIGraphicsBeginImageContextWithOptions(size, false, scale) let context: CGContext! = UIGraphicsGetCurrentContext() assert(context != nil) // correctly rotate image context.translateBy(x: 0, y: size.height) context.scaleBy(x: 1.0, y: -1.0) let rect = CGRect(x: 0.0, y: 0.0, width: size.width, height: size.height) draw(context, rect) let image = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() return image! } } 

स्विफ्ट के साथ

 let commentImageView = UIImageView(frame: CGRectMake(100, 100, 100, 100)) commentImageView.image = UIImage(named: "myimage.png")!.imageWithRenderingMode(UIImageRenderingMode.AlwaysTemplate) commentImageView.tintColor = UIColor.blackColor() addSubview(commentImageView) 

अगर कोई UIImageView बिना एक समाधान की देखभाल करता है:

 // (Swift 3) extension UIImage { func tint(with color: UIColor) -> UIImage { var image = withRenderingMode(.alwaysTemplate) UIGraphicsBeginImageContextWithOptions(size, false, scale) color.set() image.draw(in: CGRect(origin: .zero, size: size)) image = UIGraphicsGetImageFromCurrentImageContext()! UIGraphicsEndImageContext() return image } } 

इसे इस्तेमाल करे

http://robots.thoughtbot.com/designing-for-ios-blending-modes

या

 - (void)viewDidLoad { [super viewDidLoad]; UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10, 30, 300, 50)]; label.numberOfLines = 0; label.font = [UIFont systemFontOfSize:13]; label.text = @"These checkmarks use the same gray checkmark image with a tintColor applied to the image view"; [self.view addSubview:label]; [self _createImageViewAtY:100 color:[UIColor purpleColor]]; } - (void)_createImageViewAtY:(int)y color:(UIColor *)color { UIImage *image = [[UIImage imageNamed:@"gray checkmark.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; UIImageView *imageView = [[UIImageView alloc] initWithImage:image]; CGRect frame = imageView.frame; frame.origin.x = 100; frame.origin.y = y; imageView.frame = frame; if (color) imageView.tintColor = color; [self.view addSubview:imageView]; } 

तेज 3 प्रयोजनों के लिए

theImageView.image = theImageView.image!.withRenderingMode(.alwaysTemplate) theImageView.tintColor = UIColor.red

अब मैं डंकन बबेज प्रतिक्रिया में आधारित इस पद्धति का उपयोग करता हूं:

 + (UIImageView *) tintImageView: (UIImageView *)imageView withColor: (UIColor*) color{ imageView.image = [imageView.image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; [imageView setTintColor:color]; return imageView; } 

यदि आप स्पष्ट बटन को बदलने के लिए एक छवि है तो आप इसे स्विफ्ट 3 में उपयोग कर सकते हैं

 func addTextfieldRightView(){ let rightViewWidth:CGFloat = 30 let viewMax = self.searchTxt.frame.height let buttonMax = self.searchTxt.frame.height - 16 let buttonView = UIView(frame: CGRect( x: self.searchTxt.frame.width - rightViewWidth, y: 0, width: viewMax, height: viewMax)) let myButton = UIButton(frame: CGRect( x: (viewMax - buttonMax) / 2, y: (viewMax - buttonMax) / 2, width: buttonMax, height: buttonMax)) myButton.setImage(UIImage(named: "BlueClear")!, for: .normal) buttonView.addSubview(myButton) let clearPressed = UITapGestureRecognizer(target: self, action: #selector(SearchVC.clearPressed(sender:))) buttonView.isUserInteractionEnabled = true buttonView.addGestureRecognizer(clearPressed) myButton.addTarget(self, action: #selector(SearchVC.clearPressed(sender:)), for: .touchUpInside) self.searchTxt.rightView = buttonView self.searchTxt.rightViewMode = .whileEditing } 

स्विफ्ट में विस्तार का लाभ उठाएं: –

 extension UIImageView { func changeImageColor( color:UIColor) -> UIImage { image = image!.withRenderingMode(.alwaysTemplate) tintColor = color return image! } } //Change color of logo logoImage.image = logoImage.changeImageColor(color: .red) 

यहां छवि विवरण दर्ज करें

उप-वर्ग जो कोड और इंटरफ़ेस बिल्डर से भी उपयोग किया जा सकता है:

 @implementation TintedImageView - (instancetype)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { [self setup]; } return self; } - (instancetype)initWithCoder:(NSCoder *)aDecoder { self = [super initWithCoder:aDecoder]; if (self) { [self setup]; } return self; } -(void)setup { self.image = [self.image imageWithRenderingMode:UIImageRenderingModeAlwaysTemplate]; } @end 

आईओएस

इसे इंटरफ़ेसबिल्डर से करने का समाधान, सेट करेंटैपमैट परम कुंजीपैथ और आईबी से रंग का चयन करें

 extension UIImageView { // make template image with tint color var templateImage: Bool { set { if newValue, let image = self.image { let newImage = image.withRenderingMode(.alwaysTemplate) self.image = newImage } } get { return false } } 

}

यह मेरा UIImage विस्तार है और आप सीधे एक छवि के लिए changeTintColor फ़ंक्शन का उपयोग कर सकते हैं।

 extension UIImage { func changeTintColor(color: UIColor) -> UIImage { var newImage = self.withRenderingMode(.alwaysTemplate) UIGraphicsBeginImageContextWithOptions(self.size, false, newImage.scale) color.set() newImage.draw(in: CGRect(x: 0.0, y: 0.0, width: self.size.width, height: self.size.height)) newImage = UIGraphicsGetImageFromCurrentImageContext()! UIGraphicsEndImageContext() return newImage } func changeColor(color: UIColor) -> UIImage { let backgroundSize = self.size UIGraphicsBeginImageContext(backgroundSize) guard let context = UIGraphicsGetCurrentContext() else { return self } var backgroundRect = CGRect() backgroundRect.size = backgroundSize backgroundRect.origin.x = 0 backgroundRect.origin.y = 0 var red: CGFloat = 0 var green: CGFloat = 0 var blue: CGFloat = 0 var alpha: CGFloat = 0 color.getRed(&red, green: &green, blue: &blue, alpha: &alpha) context.setFillColor(red: red, green: green, blue: blue, alpha: alpha) context.translateBy(x: 0, y: backgroundSize.height) context.scaleBy(x: 1.0, y: -1.0) context.clip(to: CGRect(x: 0.0, y: 0.0, width: self.size.width, height: self.size.height), mask: self.cgImage!) context.fill(backgroundRect) var imageRect = CGRect() imageRect.size = self.size imageRect.origin.x = (backgroundSize.width - self.size.width) / 2 imageRect.origin.y = (backgroundSize.height - self.size.height) / 2 context.setBlendMode(.multiply) context.draw(self.cgImage!, in: imageRect) let newImage = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() return newImage! } } 

इस तरह के उपयोग के उदाहरण

 let image = UIImage(named: "sample_image") imageView.image = image.changeTintColor(color: UIColor.red) 

और आप बदल परिवर्तन का उपयोग कर सकते हैं रंग का रंग बदलने के लिए समारोह

Swift 3 से एक्सटेंशन का Swift 3 संस्करण

 func imageWithColor(color: UIColor) -> UIImage { UIGraphicsBeginImageContextWithOptions(self.size, false, self.scale) color.setFill() let context = UIGraphicsGetCurrentContext()! as CGContext context.translateBy(x: 0, y: self.size.height) context.scaleBy(x: 1.0, y: -1.0); context.setBlendMode(.normal) let rect = CGRect(x: 0, y: 0, width: self.size.width, height: self.size.height) as CGRect context.clip(to: rect, mask: self.cgImage!) context.fill(rect) let newImage = UIGraphicsGetImageFromCurrentImageContext()! as UIImage UIGraphicsEndImageContext() return newImage }