ios - under - Cómo cambiar la imagen UIButton en Swift
swift button with image and text (10)
A partir de swift 3.0, se ha eliminado el estado normal. Puede usar el siguiente para aplicar el estado normal.
myButton.setTitle("myTitle", for: [])
Estoy tratando de cambiar la imagen de un UIButton usando Swift ... ¿Qué debo hacer?
Este es el código OBJ-C. Pero no sé con Swift:
[playButton setImage:[UIImage imageNamed:@"play.png"] forState:UIControlStateNormal];
Desde su código Obc-C, creo que desea establecer una imagen para el botón, así que intente de esta manera:
let playButton = UIButton(type: .Custom)
if let image = UIImage(named: "play.png") {
playButton.setImage(image, forState: .Normal)
}
En breve:
playButton.setImage(UIImage(named: "play.png"), forState: UIControlState.Normal)
Para Swift 3:
let playButton = UIButton(type: .custom)
playButton.setImage(UIImage(named: "play.png"), for: .normal)
En Swift 4.2 y Xcode 10.1
Añadir imagen para el UIButton seleccionado
button.addTarget(self, action: #selector(self.onclickDateCheckMark), for: .touchUpInside)//Target
button.setImage(UIImage.init(named: "uncheck"), for: UIControl.State.normal)//When selected
button.setImage(UIImage.init(named: "check"), for: UIControl.State.highlighted)//When highlighted
button.setImage(UIImage.init(named: "check"), for: UIControl.State.selected)//When selected
Pero si desea cambiar la imagen del botón seleccionado , debe cambiar su estado seleccionado. Entonces solo la imagen seleccionada aparecerá en su botón.
@objc func onclickDateCheckMark(sender:UIButton) {
if sender.isSelected == true {
sender.isSelected = false
print("not Selected")
}else {
sender.isSelected = true
print("Selected")
}
}
Para cualquiera que use Assets.xcassets y Swift 3, sería así (sin necesidad de .png)
let buttonDone = UIButton(type: .Custom)
if let image = UIImage(named: "Done") {
self.buttonDone.setImage(image, for: .normal)
}
Prefiero el método de inicialización de mis variables en la parte superior primero:
let playButton:UIButton!
var image:UIImage!
y luego configurándolos en viewDidLoad
override func viewDidLoad {
...
playButton = UIButton(type: .Custom)
imagePlay = UIImage(named:"play.png")
playButton.setImage(imagePlay, forState: .Normal)
}
Sí, incluso podemos cambiar la imagen de UIButton, usando flag.
class ViewController: UIViewController
{
@IBOutlet var btnImage: UIButton!
var flag = false
override func viewDidLoad()
{
super.viewDidLoad()
//setting default image for button
setButtonImage()
}
@IBAction func btnClick(_ sender: Any)
{
flag = !flag
setButtonImage()
}
func setButtonImage(){
let imgName = flag ? "share" : "image"
let image1 = UIImage(named: "/(imgName).png")!
self.btnImage.setImage(image1, for: .normal)
}
}
Aquí, después de cada clic, la imagen de su botón cambiará alternativamente.
en Swift 4, (Xcode 9) ejemplo para activar o desactivar la imagen del botón (btnRec):
var bRec:Bool = true
@IBOutlet weak var btnRec: UIButton!
@IBAction func btnRec(_ sender: Any) {
bRec = !bRec
if bRec {
btnRec.setImage(UIImage(named: "MicOn.png"), for: .normal)
} else {
btnRec.setImage(UIImage(named: "MicOff.png"), for: .normal)
}
}
en realidad puede hacer esto resaltando el botón y dentro del insepctor en la barra de herramientas de la derecha puede actualizar la imagen. obviamente puede hacerlo en código también como se indicó anteriormente, pero esta es otra opción para usted
suponga que este es su
UIButton Name
conectado como
@IBOutlet var btn_refresh: UIButton!
Puedes colocar tu imagen directamente en tres modos
// for normal state
btn_refresh.setImage(UIImage(named: "xxx.png"), forState: UIControlState.Normal)
// for Highlighted state
btn_refresh.setImage(UIImage(named: "yyy.png"), forState: UIControlState.Highlighted)
// for Selected state
btn_refresh.setImage(UIImage(named: "zzzz.png"), forState: UIControlState.Selected)
en la acción de su botón
//MARK: button_refresh action
@IBAction func button_refresh_touchup_inside(sender: UIButton)
{
//if you set the image on same UIButton
sender.setImage(UIImage(named: "newimage.png"), forState: UIControlState.Normal)
//if you set the image on another UIButton
youranotherbuttonName.setImage(UIImage(named: "newimage.png"), forState: UIControlState.Normal)
}
en swift 3.0 :
@IBOutlet weak var selectionButton: UIButton!
selectionButton.setImage(UIImage.addBlueIcon, for: .selected)