Как программно настроить альфа UIImage в SWIFT?

Я нашел много решений здесь, но не для Swift, и я знаю, что вы можете сделать это с помощью UIImageView, но в моем случае мне нужно программно установить прозрачное альфа-изображение для UIButton. Лучше всего будет расширение 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)

Текущий результат:

current

Желаемый результат:

desired

Ответы

Ответ 1

К счастью, я смог помочь себе и хотел бы поделиться с вами своим решением:

Swift 3

// 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!   
    }
}

Вышеупомянутое новое расширение Swift, которое я добавил в свой проект, а затем я изменил пример UIButton следующим образом, чтобы иметь альфа-прозрачное фоновое изображение с прозрачностью 50%.

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

myButton.setBackgroundImage(img, for: .normal)

Ответ 2

Самый простой способ - разместить UIImage внутри UIImageView и установить там альфа.

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

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

Ответ 3

Мне удалось установить альфу, используя следующий код:

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