Create UIImage with solid color in Swift Create UIImage with solid color in Swift swift swift

Create UIImage with solid color in Swift


Another nice solution,Swift 3.0

    public extension UIImage {      convenience init?(color: UIColor, size: CGSize = CGSize(width: 1, height: 1)) {        let rect = CGRect(origin: .zero, size: size)        UIGraphicsBeginImageContextWithOptions(rect.size, false, 0.0)        color.setFill()        UIRectFill(rect)        let image = UIGraphicsGetImageFromCurrentImageContext()        UIGraphicsEndImageContext()                guard let cgImage = image?.cgImage else { return nil }        self.init(cgImage: cgImage)      }    }

Swift 2.2 compatible, is to create another constructor in UIImage, in this way:

    public extension UIImage {        public convenience init?(color: UIColor, size: CGSize = CGSize(width: 1, height: 1)) {            let rect = CGRect(origin: .zero, size: size)            UIGraphicsBeginImageContextWithOptions(rect.size, false, 0.0)            color.setFill()            UIRectFill(rect)            let image = UIGraphicsGetImageFromCurrentImageContext()            UIGraphicsEndImageContext()                    guard let cgImage = image?.CGImage else { return nil }            self.init(CGImage: cgImage)        }      }

In this way you can create the custom colored-image in this way:

    let redImage = UIImage(color: .redColor())

Or, optionally, create the image with a custom size:

    let redImage200x200 = UIImage(color: .redColor(), size: CGSize(width: 200, height: 200))


Swift 4 version:

extension UIColor {    func image(_ size: CGSize = CGSize(width: 1, height: 1)) -> UIImage {        return UIGraphicsImageRenderer(size: size).image { rendererContext in            self.setFill()            rendererContext.fill(CGRect(origin: .zero, size: size))        }    }}

Usage:

let image0 = UIColor.orange.image(CGSize(width: 128, height: 128))let image1 = UIColor.yellow.image()


Here's another option. I believe you wanted an exact UIImage object.

func getImageWithColor(color: UIColor, size: CGSize) -> UIImage {    let rect = CGRectMake(0, 0, size.width, size.height)    UIGraphicsBeginImageContextWithOptions(size, false, 0)    color.setFill()    UIRectFill(rect)    let image: UIImage = UIGraphicsGetImageFromCurrentImageContext()    UIGraphicsEndImageContext()    return image}

Stick this in your Swift code and call it

Swift 3.1:

func getImageWithColor(color: UIColor, size: CGSize) -> UIImage {    let rect = CGRect(x: 0, y: 0, width: size.width, height: size.height)    UIGraphicsBeginImageContextWithOptions(size, false, 0)    color.setFill()    UIRectFill(rect)    let image: UIImage = UIGraphicsGetImageFromCurrentImageContext()!    UIGraphicsEndImageContext()    return image}