2017-11-25 5 views
1

내가 신속한에서 그리고 난이있는 UIImage와 UIColor에서받는 함수를 생성하기 위해 노력하고있어에있는 UIImage의 색상을 변경하고있는 UIImage 내가 작업하고 있지 않다스위프트

를 칠한 반환하는 방법 UIImageView, 이들은 아이콘으로 사용하려는 UIImages입니다. 이것을 구현할 수있는 좋은 방법이 있습니까? (내가 때문에 아이콘 생각하는) 당신은 PNG 이미지를 사용하는 경우

답변

1
당신이 원하는 색상을 설정 이미지 컨텍스트를 시작 UIGraphicsBeginImageContextWithOptions를 사용하여 그리는 이미지의 방법을 func draw(in rect: CGRect)을 사용할 수 있습니다

당신의 아이콘 이미지 그것을 렌더링 모드 .alwaysTemplate를 사용하여 :

extension UIImage { 
    func tinted(with color: UIColor) -> UIImage? { 
     UIGraphicsBeginImageContextWithOptions(size, false, scale) 
     defer { UIGraphicsEndImageContext() } 
     color.set() 
     withRenderingMode(.alwaysTemplate) 
      .draw(in: CGRect(origin: .zero, size: size)) 
     return UIGraphicsGetImageFromCurrentImageContext() 
    } 
} 

놀이터 테스트

let camera = UIImage(data: try! Data(contentsOf: URL(string: "https://cdn4.iconfinder.com/data/icons/ionicons/512/icon-camera-128.png")!))! 
let redCmera = camera.tinted(with: .red) 

enter image description here

+1

뛰어난! 고맙습니다 – TJBlack31

1

은 - 바로 사용

let originalImage = UIImage(named: "iconName") 
let tintedImage = originalImage?.withRenderingMode(.alwaysTemplate) 
yourButton.setImage(tintedImage, forState: .normal) 
yourButton.tintColor = UIColor.blue //change color of icon 
+1

템플릿 이미지가 너무 PDF와 함께 작동합니다. 자원을 가져올 때 자산 catlog에서 렌더링 모드를 변경해야합니다. –

+0

@derdida 답변 해 주셔서 감사합니다. 이것은 실제로 Google지도 마커 용입니다. 사용할 수있는 비슷한 기능이 있습니까? – TJBlack31

+0

docu에서 확인 했으므로 GMSMarker.markerImage (with : UIColor.blue)를 사용하여 마커 이미지의 색상을 변경하십시오. – derdida