UIImageの透過部分に色をつける

UIImageの透過部分に色をつけるもっとかっこいい書き方がありそうだけれど、とりあえずこれでやりたいことは実現できるので。

extension UIImage {
    func fill(color: UIColor) -> UIImage {
        let rect = CGRect(origin: CGPointZero, size: self.size)
        UIGraphicsBeginImageContextWithOptions(rect.size, false, UIScreen.mainScreen().scale)
        let context = UIGraphicsGetCurrentContext()

        CGContextSetFillColorWithColor(context, color.CGColor)
        CGContextFillRect(context, rect)
        self.drawInRect(rect)

        let coloredImage = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        return coloredImage
    }
}

ただ単にイメージを描き直しているだけなんですが、その際に背景色を設定しています。パフォーマンス的にいいね!

IOS Simulator Screen Shot 2015 09 30 3 22 54

これはもともと透過のアイコンんイメージですが、透過部分を白に変えています。

Pocket
LINEで送る

You may also like...