簡體   English   中英

如何以編程方式在 SWIFT 中設置 UIImage 的 alpha?

[英]How to set the alpha of an UIImage in SWIFT programmatically?

我在這里找到了很多解決方案,但不適用於Swift ,我知道您可以使用 UIImageView 來做到這一點,但在我的情況下,我需要以編程方式為UIButton設置 alpha 透明背景圖像。 最好是 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)

當前結果:

當前的

想要的結果:

想要的

幸運的是,我能夠幫助自己,並想與您分享我的解決方案:

斯威夫特 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% 的 alpha 透明背景圖像。

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

myButton.setBackgroundImage(img, for: .normal)

最簡單的方法是將UIImage放在UIImageView並在那里設置 alpha。

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

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

斯威夫特 5,iOS 10+

如果您的應用不支持 iOS 10 之前的操作系統,那么您可以利用更強大的UIGraphicsImageRenderer UIKit 繪圖 API。

extension UIImage {
    func withAlpha(_ a: CGFloat) -> UIImage {
        return UIGraphicsImageRenderer(size: size, format: imageRendererFormat).image { (_) in
            draw(in: CGRect(origin: .zero, size: size), blendMode: .normal, alpha: a)
        }
    }
}

用法

let img = UIImage(named: "someImage")?.withAlpha(0.5)

我能夠使用以下代碼設置 alpha:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM