我在这里找到了很多解决方案,但不是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)

当前结果:

当前

预期结果:

所需

推荐答案

幸运的是,我能够帮助自己,并愿意与您分享我的解决方案:

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%的alpha透明背景图像.

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

myButton.setBackgroundImage(img, for: .normal)

Swift相关问答推荐

Swift中可以取消的延迟任务

限制文本字段中的字符数- Swift

结束手势不会在滚动视图中触发

SWIFT中MAP的静态方法包装器

我可以在预览中通过拖动手势跳转,但在模拟器中失败

如何异步返回视图?什么?

为什么变量不存储在 Swift 的过程数据区中

在Swift中如何将NSUrl转换为本地路径URL

在Swift中如何用变量计算0.9的立方

Swift Property Wrappers-Initialization 失败并显示无法将‘Double’类型的值转换为预期的参数类型

如何自己实现同一个 iOS 16 锁屏圆形小部件?

从 Swift Vapor Server 中调用 ShazamKit

为 SwiftUI 中的属性提供默认值

在 Swift 中为(递归)扩展提供默认实例参数

与 SwiftUI 中的 onChange 修饰符相比,objectWillChangeSequence 的目的是什么?

如何更改任务栏 colored颜色 和 sf 符号 colored颜色 ?

如何将使用\u{ea12}创建的 Swift 字符串转换回其十六进制值/字符串ea12?

如何发送静默推送通知有效负载

Swift 2.0 最低系统版本要求(部署目标)

使用 ARAnchor 插入 node 和直接插入 node 有什么区别?