簡體   English   中英

如何在 Swift 中更改 UIButton 圖像

[英]How to change UIButton image in Swift

我正在嘗試使用 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)

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

假設這是您連接的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)
}

對於任何使用 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 開始,.normal 狀態已被刪除。您可以使用以下內容來應用正常狀態。

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

}

在這里,每次單擊后,您的按鈕圖像都會交替更改。

斯威夫特 5

yourButton.setImage(UIImage(named: "BUTTON_FILENAME.png"), for: .normal)

Swift 5 並確保圖像縮放到按鈕的大小但保持在按鈕范圍內。

yourButton.clipsToBounds = true
yourButton.contentMode = .scaleAspectFill

// Use setBackgroundImage or setImage
yourButton.setBackgroundImage(UIImage(named: "yourImage"), for: .normal)

實際上,您可以通過突出顯示按鈕來執行此操作,並且在右側工具欄上的檢查器中您可以更新圖像。 顯然,您也可以如前所述在代碼中執行此操作,但這是您的另一種選擇

在 Swift 4.2 和 Xcode 10.1 中

選定的 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

但是如果你想改變選中的按鈕圖像,你需要改變它的選中狀態。 然后只有選定的圖像會出現在您的按鈕中。

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

    }
}

在 swift 3.0 中

@IBOutlet weak var selectionButton: UIButton!

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM