সুইফট 3 :
আপনি যদি ইতিমধ্যে xCode ইন্টারফেস বিল্ডারের মাধ্যমে আপনার চিত্র সেট করে থাকেন তবে এই সমাধানটি আরামদায়ক হতে পারে। মূলত আপনার একটি চিত্র রঙিন করার জন্য একটি এক্সটেনশন রয়েছে:
extension UIImage {
public func image(withTintColor color: UIColor) -> UIImage{
UIGraphicsBeginImageContextWithOptions(self.size, false, self.scale)
let context: CGContext = UIGraphicsGetCurrentContext()!
context.translateBy(x: 0, y: self.size.height)
context.scaleBy(x: 1.0, y: -1.0)
context.setBlendMode(CGBlendMode.normal)
let rect: CGRect = CGRect(x: 0, y: 0, width: self.size.width, height: self.size.height)
context.clip(to: rect, mask: self.cgImage!)
color.setFill()
context.fill(rect)
let newImage: UIImage = UIGraphicsGetImageFromCurrentImageContext()!
UIGraphicsEndImageContext()
return newImage
}
}
তারপরে, আপনি নির্দিষ্ট রাজ্যের জন্য চিত্রটি রঙিন করতে এই ইউআইবাটন এক্সটেনশনটি প্রস্তুত করতে পারেন :
extension UIButton {
func imageWith(color:UIColor, for: UIControlState) {
if let imageForState = self.image(for: state) {
self.image(for: .normal)?.withRenderingMode(.alwaysTemplate)
let colorizedImage = imageForState.image(withTintColor: color)
self.setImage(colorizedImage, for: state)
}
}
}
ব্যবহার:
myButton.imageWith(.red, for: .normal)
পিএস (টেবিল কোষগুলিতেও ভাল কাজ করছে, আপনার ইউটিআইমেজ এক্সটেনশনের setNeedDisplay()
কারণে রঙের পরিবর্তনটি অবিলম্বে কল করা দরকার ..