42

私はここで多くの解決策を見つけましたが、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)

現在の結果:

現在

望ましい結果:

希望

4

4 に答える 4

90

幸いなことに、私は自分自身を助けることができたので、私の解決策をあなたと共有したいと思います:

スイフト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)
于 2015-02-14T16:52:15.890 に答える
31

最も簡単な方法は、UIImage内部に aを配置UIImageViewし、そこにアルファを設定することです。

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

myButton.setBackgroundImage(image, forState: UIControlState.Normal)
于 2015-02-14T17:19:23.153 に答える