UIColorからUIImageに変換する

個人的には以下のようなメソッドをUIColorのextensionとして宣言している。

extension UIColor {
    /// 四角
    func rectImage(width: CGFloat, height: CGFloat) -> UIImage {
        let rect = CGRect(x: 0, y: 0, width: width, height: height)
        UIGraphicsBeginImageContext(rect.size)
        let contextRef = UIGraphicsGetCurrentContext()
        contextRef?.setFillColor(self.cgColor)
        contextRef?.fill(rect)
        let img = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        return img!
    }
    
    /// 丸
    func circleImage(width: CGFloat, height: CGFloat) -> UIImage {
        let rect = CGRect(x: 0, y: 0, width: width, height: height)
        UIGraphicsBeginImageContextWithOptions(rect.size, false, 0)
        let contextRef = UIGraphicsGetCurrentContext()
        contextRef?.setFillColor(self.cgColor)
        contextRef?.fillEllipse(in: rect)
        let img = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        return img!
    }
}

上記二つのメソッドの違いは、実質CGContextのfillの方法だけ。
rectの場合はfill(_:), circleの場合はfillEllipse(in:)を使っている。

公式リファレンス

fill(_:) - CGContext | Apple Developer Documentation

fillEllipse(in:) - CGContext | Apple Developer Documentation