На основании ответа Алексея Ишкова, но в Swift
Я использовал расширение класса UIImage.
Swift 2:
Расширение UIImage:
extension UIImage {
func imageWithAlpha(alpha: CGFloat) -> UIImage {
UIGraphicsBeginImageContextWithOptions(size, false, scale)
drawAtPoint(CGPointZero, blendMode: .Normal, alpha: alpha)
let newImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return newImage
}
}
Для использования:
let image = UIImage(named: "my_image")
let transparentImage = image.imageWithAlpha(0.5)
Swift 3 / Swift 4:
Обратите внимание, что эта реализация возвращает необязательный UIImage. Это потому, что в Swift 3 UIGraphicsGetImageFromCurrentImageContext
теперь возвращается необязательный. Это значение может быть nil, если контекст равен nil или не создан с помощью UIGraphicsBeginImageContext
.
UIImage Extension:
extension UIImage {
func image(alpha: CGFloat) -> UIImage? {
UIGraphicsBeginImageContextWithOptions(size, false, scale)
draw(at: .zero, blendMode: .normal, alpha: alpha)
let newImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return newImage
}
}
Для использования:
let image = UIImage(named: "my_image")
let transparentImage = image?.image(alpha: 0.5)