Как изменить изображение UIButton в Swift



Я пытаюсь изменить образ UIButton с помощью Swift...
Что же мне делать



это код OBJ-C.но я не знаю с Swift:



[playButton setImage:[UIImage imageNamed:@"play.png"] forState:UIControlStateNormal];
883   9  

9 ответов:

из вашего кода Obc-C я думаю, что вы хотите установить изображение для кнопки, поэтому попробуйте так:

let playButton  = UIButton(type: .Custom)
if let image = UIImage(named: "play.png") {
    playButton.setImage(image, forState: .Normal)
}

Короче:

playButton.setImage(UIImage(named: "play.png"), forState: UIControlState.Normal)

Для Swift 3:

let playButton  = UIButton(type: .custom)
playButton.setImage(UIImage(named: "play.png"), for: .normal)

предположим, что это ваш связан.UIButton Name как

@IBOutlet var btn_refresh: UIButton!

ваш может непосредственно разместить изображение в трех режимах

 // 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)

на кнопку

  //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)
}

для всех, кто использует активы.xcassets и Swift 3, это было бы так (не нужно .png)

let buttonDone  = UIButton(type: .Custom)

if let image = UIImage(named: "Done") {
    self.buttonDone.setImage(image, for: .normal)
}

начиная с swift 3.0 .нормальное состояние было удалено.вы можете использовать следующее, чтобы применить нормальное состояние.

myButton.setTitle("myTitle", for: [])

Я предпочитаю метод инициализации моих переменных в начале:

let playButton:UIButton!
var image:UIImage!

а затем установить их в viewDidLoad

override func viewDidLoad {
  ...
  playButton = UIButton(type: .Custom)
  imagePlay = UIImage(named:"play.png")
  playButton.setImage(imagePlay, forState: .Normal)
}

в Swift 4, (в Xcode 9) пример для включения или выключения изображения кнопки (btnRec):

var bRec:Bool = true

@IBOutlet weak var btnRec: UIButton!
@IBAction func btnRec(_ sender: Any) {
    bRec = !bRec
    if (bRec == true) {
        btnRec.setImage(UIImage(named: "MicOn.png"), for: .normal)
    } else {
        btnRec.setImage(UIImage(named: "MicOff.png"), for: .normal)
    }
}

да, даже мы можем изменить изображение UIButton, используя флаг.

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)
    }

}

здесь, после каждого нажатия кнопки изображение будет меняться в качестве альтернативы.

вы можете сделать это, выделив кнопку и в insepctor на правой панели инструментов вы можете обновить изображение. очевидно, что вы можете сделать это в коде также, как указано ранее, но это еще один вариант для вас

в swift 3.0:

@IBOutlet weak var selectionButton: UIButton!

selectionButton.setImage(UIImage.addBlueIcon, for: .selected)

Comments

    Ничего не найдено.