In Swift 3, when I try to programmatically change the color of an image loaded from assets just like this:
let imageView = UIImageView() let image = UIImage(named: "imageFromAssets")?.withRenderingMode(.alwaysTemplate) imageView.contentMode = .scaleAspectFit imageView.tintColor = GREEN_UICOLOR // Change to custom green color imageView.image = image
The image shows up as a square block below:
However, the funny thing is this does not always happen. With some other images in the assets, it works and changes the tint to green:
Why is there inconsistent behavior here? And in general how do I add a template image to assets, and be able to programmatically change its color? I realize when I do not change the image to a template image it works, but I can't do that because I want to change the image's tint.
extension UIImage { static func coloredImage(image: UIImage?, color: UIColor) -> UIImage? { guard let image = image else { return nil } let backgroundSize = image. size UIGraphicsBeginImageContextWithOptions(backgroundSize, false, UIScreen. main. scale) let ctx = UIGraphicsGetCurrentContext()!
Drag and drop image onto Xcode's assets catalog. Or, click on a plus button at the very bottom of the Assets navigator view and then select “New Image Set”. After that, drag and drop an image into the newly create Image Set, placing it at appropriate 1x, 2x or 3x slot.
For template images the background needs to be transparent - not white.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With