program tip

Swift에서 UIButton 이미지를 변경하는 방법

radiobox 2020. 8. 21. 07:30
반응형

Swift에서 UIButton 이미지를 변경하는 방법


Swift를 사용하여 UIButton의 이미지를 변경하려고합니다. 어떻게해야합니까?

이것은 OBJ-C 코드이지만 Swift에 대해서는 잘 모릅니다.

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

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

Swift 4에서 (Xcode 9) 버튼 그림을 켜거나 끄는 예제 (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)
    }
}

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

네, 플래그를 사용하여 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)
    }

}

Here, after every click your button image will change alternatively.


you can actually do this by highlighting the button and within the insepctor on the right hand tool bar you can update the image. obviously you can do it in code also as stated previously but this is another option for you


In Swift 4.2 and Xcode 10.1

Add image for selected UIButton

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

But if you want to change selected button image you need to change it's selected state. Then only selected image will appear in your button.

@objc func onclickDateCheckMark(sender:UIButton) {
    if sender.isSelected == true {
        sender.isSelected = false
        print("not Selected")
    }else {
        sender.isSelected = true
        print("Selected")

    }
}

in swift 3.0:

@IBOutlet weak var selectionButton: UIButton!

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

참고URL : https://stackoverflow.com/questions/26837371/how-to-change-uibutton-image-in-swift

반응형