web-dev-qa-db-fra.com

Comment définir l'alpha d'un UIImage dans Swift par programme?

J'ai trouvé beaucoup de solutions ici mais pas pour Swift, et je sais que vous pouvez le faire avec un UIImageView, mais dans mon cas j'ai besoin d'une image d'arrière-plan transparente définie par programme pour un IButton. Le mieux serait une extension UIImage!

let img = UIImage(named: "imageWithoutAlpha")
var imgInsets = UIEdgeInsetsMake(0, 24, 0, 24)
image = image!.resizableImageWithCapInsets(imgInsets)

let myButton = UIButton(frame: CGRect(x: 50, y: 50, width: img!.size.width, height: img!.size.height))
myButton.setBackgroundImage(img, forState: UIControlState.Normal)
myButton.contentEdgeInsets = UIEdgeInsetsMake(0, 20, 0, 20)
myButton.setTitle("Startbutton", forState: UIControlState.Normal)
myButton.setTitleColor(UIColor.blackColor(), forState: UIControlState.Normal)
myButton.sizeToFit()
view.addSubview(myButton)

Résultat actuel:

current

Résultat désiré:

desired

29
Peter Kreinz

Heureusement, j'ai pu m'aider et j'aimerais partager avec vous ma solution:

Swift

// UIImage+Alpha.Swift

extension UIImage {  

    func alpha(_ value:CGFloat) -> UIImage {
        UIGraphicsBeginImageContextWithOptions(size, false, scale)
        draw(at: CGPoint.zero, blendMode: .normal, alpha: value)
        let newImage = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        return newImage!   
    }
}

La nouvelle extension Swift Swift $ que j'ai ajoutée à mon projet, puis j'ai changé l'exemple UIButton comme suit, pour avoir une image d'arrière-plan transparente alpha avec une transparence de 50%.

let img = UIImage(named: "imageWithoutAlpha")!.alpha(0.5)
let myButton = UIButton()

myButton.setBackgroundImage(img, for: .normal)
74
Peter Kreinz

La façon la plus simple est de mettre votre UIImage dans un UIImageView et de définir l'alpha à cet endroit.

let image = UIImage(named: "imageWithoutAlpha")
let imageView = UIImageView(image: image)
imageView.alpha = 0.5

myButton.setBackgroundImage(image, forState: UIControlState.Normal)
23
leonarth

J'ai pu définir l'alpha en utilisant le code suivant:

self.imageView.image = UIImageView(image: "image.png")
imageView.alpha = 0.5
8
Bigfoot11