簡體   English   中英

如何在Swift 3中設置UIButton的圖像?

[英]How to set image of UIButton in Swift 3?

最初,我的代碼正在運行。

IBAction func clickedon(_ sender: UIButton) {

    if(gamestate[sender.tag] == 0 && gameisactive == true){

        gamestate[sender.tag] = activeplayer

    if (activeplayer == 1){
        print("working")
        sender.setImage(UIImage(named:"Cross.png"), for: UIControlState()) <-----------
        activeplayer = 2
    }
    else {
        print("working2")
        sender.setImage(UIImage(named:"Nought.png"), for: UIControlState()) <-----------
        activeplayer = 1

    } 
    }

設置圖像的這兩段代碼正在運行。 這些按鈕沒有設置任何圖像。 單擊它們時,我希望它們切換到這些圖像。 這些圖像位於帶有視圖控制器的文件夾中。 我不確定他們為什么停止工作。 我評論了所有其他代碼,看它是否可能是一個問題,但它似乎不是。 在兩種情況下都會打印出打印報表。 它只是設置的圖像似乎沒有做任何事情。 沒有錯誤,它什么都不做。

我真的不了解UIControlState()代碼。 我正在模仿一個具有相同代碼的在線項目。 真的很奇怪。 如果您有任何建議,請告訴我!

IBAction func clickedon(_ sender:UIButton){

if(gamestate[sender.tag] == 0 && gameisactive == true){

    gamestate[sender.tag] = activeplayer

if (activeplayer == 1){
    print("working")
   sender.setImage(UIImage(named: "Cross.png")!, forState: UIControlState.Normal)
   sender.setImage(UIImage(named:"CrossSelected.png")!, forState: UIControlState.Selected)

    activeplayer = 2
}
else {
    print("working2")
    sender.setImage(UIImage(named: "Nought.png")!, forState: UIControlState.Normal)
    sender.setImage(UIImage(named:"NoughtSelected.png")!, forState: UIControlState.Selected)
    activeplayer = 1

} 
}

你可以試試這個:

let image = UIImage(named: "imagename.png")
yourButton.setBackgroundImage(image, for: .normal)

我嘗試使用其他setImage調用但不工作。 我發現這個setBackgroundImage讓圖像出現。 希望它能幫到你。

在您的代碼中,UIControlState()可以替換為UIControlState.normalUIControlState.highlighted

https://developer.apple.com/reference/uikit/uicontrolstate

IBAction func clickedon(_ sender: UIButton) {

    if(gamestate[sender.tag] == 0 && gameisactive == true){

        gamestate[sender.tag] = activeplayer

    if (activeplayer == 1){
        print("working")
        sender.setImage(UIImage(named:"Cross.png"), for: UIControlState.normal)
        sender.setImage(UIImage(named:"Cross_highlighted.png"), for: UIControlState.highlighted)
        activeplayer = 2
    }
    else {
        print("working2")
        sender.setImage(UIImage(named:"Nought.png"), for: UIControlState.normal)
        sender.setImage(UIImage(named:"Nought_highlighted.png"), for: UIControlState.highlighted)
        activeplayer = 1

    } 
}

你強迫寬度和高度約束? 如果不是,您的按鈕可能會退化,因為它們內部沒有圖像。 您也可以在設置圖像時設置框架; 我更喜歡自動布局。

  UIImage(named:"Cross.png")!
  sender.setImage(image, for: .normal)
  sender.frame.size = image.size

我想出了答案。 UIControlState.normal工作,問題是按鈕實際上放在我的板下面。 這意味着我可以點擊它們但它們不會出現。

它解釋了為什么打印語句和所有內容都能正常運行。 謝謝!

self.button.setImage(UIImage(named: "namebutton"), for: .normal)

當你想改變swift 3上按鈕的圖像時,你可以嘗試我的解決方案,相信我,因為我嘗試了它並取得了成功。 謝謝

暫無
暫無

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

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