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:
Résultat désiré:
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)
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)
J'ai pu définir l'alpha en utilisant le code suivant:
self.imageView.image = UIImageView(image: "image.png")
imageView.alpha = 0.5