UIImage不会显示带有白色前景图案的PNG

时间:2017-07-22 22:09:52

标签: ios swift uiimage xcode9-beta

这里真的需要一些帮助。我正在做一些非常基本的事情,我有UIButton并将其图像设置为我创建的UIImage。图像文件是PNG,具有透明背景和白色前景(实际图案)。但是,UIImage似乎不起作用。以下是一些截图作为参考。

这就是我设置按钮的方式:

    let exitButton = UIButton()
    exitButton.setImage(UIImage(named: "success"), for: .normal)
    exitButton.frame = CGRect(x: 0, y: 0, width: 56, height: 56)
    exitButton.translatesAutoresizingMaskIntoConstraints = false

其他图像似乎有用..

这是我正在使用的图像,它不起作用 image that doesn't work 这是我测试的图像,它的工作原理 this kind images words properly

唯一的区别是前景色...

1 个答案:

答案 0 :(得分:0)

模板图像(UIButton图像的默认模式)采用alpha并基本上将其余部分表示为有色蒙版。无论出于何种原因,白色在此过程中未得到正确处理。我想到的方式是你给按钮一个工作的面具,所以我给默认按钮的所有图像都是黑色的透明度。

但是,您可以继承UIButton并使用您想要的任何图像:

    class buttonClose: UIButton {
        required init?(coder aDecoder: NSCoder) {
            super.init(coder: aDecoder)
            if self.image(for: .normal) != nil {
                let g:UIImage = UIImage(named: "close_button32")!.withRenderingMode(.alwaysOriginal)
            let p:UIImage = UIImage(named: "close_button32highlighted")!.withRenderingMode(.alwaysOriginal)

                self.setImage(g, for: .normal)
                self.setImage(p, for: .selected)
                self.backgroundColor = .red
            }
        }
    }