如何在swift中更改按钮图像?

时间:2016-06-26 18:20:49

标签: xcode swift uibutton uiimage

我正在开发一款带按钮的应用。该按钮没有文字,图像或背景。

所以我想做的是在viewDidLoad函数中给它一个图像。

这就是我所拥有的:

@IBOutlet var tapButton: UIButton!

override func viewDidLoad() {

    super.viewDidLoad()

    tapButton.setImage("redTap.png", forState: UIControlState.Normal)
}

但我有一个错误,说我无法将字符串转换为UIIMage。

我如何让它发挥作用?

我试过了:

let image = UIImage(named: "redTap.png")

tapButton.setImage(image, forState: UIControlState.Normal)

我已经开始工作,但现在我遇到了问题。

图像被认为是红色文本但显示为蓝色。

我能够使用以下方式正确显示图像:

let image = UIImage(named: imageColor[randNum])?.imageWithRenderingMode(.AlwaysOriginal)
tapButton.setImage(image, forState: UIControlState.Normal)

我现在想要的是按下按钮时没有突出显示按钮。我有一些其他按钮,它们在xcode中分配了图像,而不是通过代码。按下时它们不会突出显示。

那么当按下按钮时如何摆脱突出显示?

8 个答案:

答案 0 :(得分:10)

你不需要" .png"。

如果" .imageWithRenderingMode(。AlwaysOriginal)"适合您:要将相同的图像保持在不同的状态,您必须为不同的状态设置相同的图像/属性。

@IBOutlet var tapButton: UIButton!

override func viewDidLoad() {
    super.viewDidLoad()

    tapButton.setImage(UIImage(named: "redTap")?.imageWithRenderingMode(.AlwaysOriginal), forState: .Normal)
    tapButton.setImage(UIImage(named: "redTap")?.imageWithRenderingMode(.AlwaysOriginal), forState: .Highlighted)
}

答案 1 :(得分:8)

Swift 3

yourBtn.setImage( UIImage.init(named: "imagename"), for: .normal)

答案 2 :(得分:2)

现在(swift 3版):

@IBOutlet var tapButton: UIButton!

override func viewDidLoad() {
    super.viewDidLoad()

    tapButton.setImage(UIImage(named: "redTap")?.withRenderingMode(.alwaysOriginal), for: .normal)
    tapButton.setImage(UIImage(named: "redTap")?.withRenderingMode(.alwaysOriginal), for: .normal)
}

答案 3 :(得分:0)

让image = UIImage(名称:“redTap.png”) tapButton.setImage(image,.Normal)

答案 4 :(得分:0)

首先,我会将您想要的图像放在Assets.xcassets文件夹中。只需将其拖入即可。然后双击它即可随意调用它。让我们说它被称为“redTap”。

对于您要放置的代码:

@IBOutlet var tapButton: UIButton!

override func viewDidLoad() {

    super.viewDidLoad()

    let redTapImage = UIImage(named: "redTap")
    tapButton.setImage(redTapImage, forState: UIControlState.Normal)
}

答案 5 :(得分:0)

let button = UIButton(type: .Custom)
let image = UIImage(named:"redTap")?.imageWithRenderingMode(.AlwaysTemplate)
button.setImage(image, forState: .Normal)
button.tintColor = UIColor.redColor()

答案 6 :(得分:0)

有一个简单的解决方案:

@IBOutlet var tapButton: UIButton!{
didSet{
let image = UIImage(named: imageColor[randNum])
tapButton.setImage(image, forState: UIControlState.Normal)
}

除此之外,在属性检查器中,将按钮类型设置为'自定义'

答案 7 :(得分:0)

首先在界面构建器中将按钮类型设置为Custom,然后将按钮的图像设置为正常状态。

enter image description here

将IBOutlet用于类文件中的按钮连接为

@IBOutlet weak var btnCheckbox: UIButton!

viewDidLoad的班级文件中,将所选状态的图片设置为

btnCheckbox.setImage(UIImage.init(named: "name_of_image"), for: .selected)

为班级文件创建@IBAction

@IBAction func onTapCheckBox(_ sender: UIButton) {
    sender.isSelected = !sender.isSelected
}

然后将@IBAction从界面构建器连接到按钮的Touch up Inside事件