kitoko552.memo

kitoko552のメモ

Swiftで円のUIImageをコードで作成する

色がついた円の画像が欲しいけど、画像を作るほどでもない(デザイナーの方に頼むほどではない)ときはコードでUIImageを作っちゃいましょう。

extension UIColor {
    func circleImage(#size: CGSize) -> UIImage {
        let rect = CGRectMake(0.0, 0.0, size.width, size.height)
        
        UIGraphicsBeginImageContextWithOptions(size, false, 0.0)
        let context = UIGraphicsGetCurrentContext()
        
        CGContextSetFillColorWithColor(context, self.CGColor)
        CGContextFillEllipseInRect(context, rect)
        
        let image = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        
        return image
    }
}

上の例では、UIColorのextensionとして定義していますが、メソッドだけ取り出しても使えます(ちょっと変える必要がありますが)。 例えばこんな感じに使えます。

let imageView = UIImageView(frame: CGRect(origin: view.center, size: CGSize(width: 50, height: 50)))
imageView.image = UIColor.blueColor().circleImage(size: imageView.frame.size)`