I am working on an app which has a button. The button has no text, image or background.
So what I want to do is to give it an image in the viewDidLoad function.
There's one simple solution:
@IBOutlet var tapButton: UIButton!{
didSet{
let image = UIImage(named: imageColor[randNum])
tapButton.setImage(image, forState: UIControlState.Normal)
}
Besides that, in the Attribute Inspector, Set Button type to 'Custom'
First set your button type as Custom
in interface builder and set the image for normal state for your button.
Connect IBOutlet for button in class file as
@IBOutlet weak var btnCheckbox: UIButton!
in your class file in viewDidLoad
set image for selected state as
btnCheckbox.setImage(UIImage.init(named: "name_of_image"), for: .selected)
Create @IBAction
for in class file as
@IBAction func onTapCheckBox(_ sender: UIButton) {
sender.isSelected = !sender.isSelected
}
Then connect @IBAction
to your button's Touch up Inside
event from interface builder
First I would put the image you wanted inside the Assets.xcassets folder. Just drag it in. Then you can call it whatever you want by double-clicking on it. Lets say that it is called "redTap".
For code you would put:
@IBOutlet var tapButton: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
let redTapImage = UIImage(named: "redTap")
tapButton.setImage(redTapImage, forState: UIControlState.Normal)
}
You don't need ".png".
If ".imageWithRenderingMode(.AlwaysOriginal)" is working for you: To keep the same image in different states, you have to set the same image/properties for the different states.
@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)
}
let button = UIButton(type: .Custom)
let image = UIImage(named:"redTap")?.imageWithRenderingMode(.AlwaysTemplate)
button.setImage(image, forState: .Normal)
button.tintColor = UIColor.redColor()
Let image = UIImage(named : "redTap.png") tapButton.setImage(image, .Normal)