멜팅비의 개발 공부

[iOS-Swift] UIImage 색상 코드에서 변경하기 본문

개발 공부/[iOS 개발]

[iOS-Swift] UIImage 색상 코드에서 변경하기

멜팅비 2021. 5. 28. 11:21
반응형

업무가 많아지면서 그동안 스터디 한 내용을 정리하거나, 개발하면서 도움이 된 코드 정리가 소홀해졌다..

이번에 iOS 프로젝트를 서브로 맡으면서 UI부터 작업을 진행하고 있는데 UI를 하면서 도움이 된 코드나 자주 검색했던 내용들을 하나씩 정리하려고 한다.


iOS 개발을 하면서 아이콘을 정말 많이 사용하게 되는데 코드 내에서 이 아이콘의 색상 변경이 필요할 때가 굉장히 많다.

Tint Color를 통해서 변경할 수 있지만 같은 이미지인데 색상만 변경해서 사용할 때 유용한 코드이다.

 

extension UIImage {
    func imageWithColor(color: UIColor) -> UIImage {
        UIGraphicsBeginImageContextWithOptions(self.size, false, self.scale)
        color.setFill()

        let context = UIGraphicsGetCurrentContext()
        context?.translateBy(x: 0, y: self.size.height)
        context?.scaleBy(x: 1.0, y: -1.0)
        context?.setBlendMode(CGBlendMode.normal)

        let rect = CGRect(origin: .zero, size: CGSize(width: self.size.width, height: self.size.height))
        context?.clip(to: rect, mask: self.cgImage!)
        context?.fill(rect)

        let newImage = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()

        return newImage!
    }
}

 

사용법

let img = UIImage(named:"icon")! as UIImage
let redImg = img.imageWithColor(color: UIColor.red)

 

 

반응형
Comments