代码之家  ›  专栏  ›  技术社区  ›  Peter Kreinz

如何以编程方式设置SWIFT中UIImage的alpha?

  •  43
  • Peter Kreinz  · 技术社区  · 11 年前

    我在这里找到了很多解决方案,但不是 敏捷的 ,我知道可以使用UIImageView来实现这一点,但在我的情况下,我需要为 UI按钮 。最好是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

    4 回复  |  直到 11 年前
        1
  •  94
  •   Peter Kreinz    8 年前

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

    雨燕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)
    
        2
  •  35
  •   Mo Abdul-Hameed Martheli    8 年前

    最简单的方法是 UIImage 内部 UIImageView 并在那里设置alpha。

    let image = UIImage(named: "imageWithoutAlpha")
    let imageView = UIImageView(image: image)
    imageView.alpha = 0.5
    
    myButton.setBackgroundImage(image, forState: UIControlState.Normal)
    
        3
  •  14
  •   trndjc    5 年前

    Swift 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)
    
        4
  •  9
  •   Bigfoot11    11 年前

    我能够使用以下代码设置alpha:

    self.imageView.image = UIImageView(image: "image.png")
    imageView.alpha = 0.5
    
    推荐文章