2017-04-07 2 views
0

Je veux dessiner un motif d'image comme une étoile, on peut changer la couleur pour cela. Puis-je changer la couleur de l'image sans utiliser l'affichage de l'image? J'ai vu beaucoup réponse changeant la couleur de teinte de UIImageView, mais l'effet est pas appliqué à UIImageModifier la couleur UIImage sans utiliser Uiimageview dans swift3

+0

Pouvez-vous fournir un code de ce que vous essayez de faire double –

+1

possible de [Comment appliquer un tintColor à un UIImage?] (http://stackoverflow.com/questions/19802982/comment-appliquer-une-tintcolor-à-une-uiimage) – inokey

+0

Trouvé la solution postée ci-dessous – Van

Répondre

0

Merci à tous pour les réponses, mais j'ai réussi à faire marcher la solution.

func changePatternImageColor() { 
    patternImage = UIImage(named: "pattern_star.png")! //make sure to reinitialize the original image here every time you change the color 
    UIGraphicsBeginImageContext(patternImage.size) 
    let context = UIGraphicsGetCurrentContext() 
    let color = UIColor(red: self.red, green: self.green, blue: self.blue, alpha: self.opacity) 
    color.setFill() 
    context?.translateBy(x: 0, y: patternImage.size.height) 
    context?.scaleBy(x: 1.0, y: -1.0) 
    //set the blend mode to color burn, and the original image 
    context?.setBlendMode(CGBlendMode.exclusion) //this does the magic. 
    let rect = CGRect(x: 0, y: 0, width: patternImage.size.height, height: patternImage.size.height) 
    context?.draw(patternImage.cgImage!, in: rect) 
    //set the mask that matches the shape of the image, then draw color burn a colored rectangle 
    context?.clip(to: rect, mask: patternImage.cgImage!) 
    context?.addRect(rect) 
    context?.drawPath(using: CGPathDrawingMode.fill) 
    patternImage = UIGraphicsGetImageFromCurrentImageContext()! 
    image_ref = patternImage.cgImage 
    UIGraphicsEndImageContext() 
} 

L'image est l'image ajoutée à l'actif. P.S. le patternImage a ajouté l'actif DEVRAIT être en couleur noire

0

tintColor est non seulement une propriété d'un UIImageView, il est une propriété d'un UIView, aussi longtemps que votre image est dans un UIView, vous pouvez utiliser UIView.tintColor.

+0

Je veux ajouter le effet à l'image pas vue de l'image, comme je vais dessiner motif dans le contexte, merci – Van