SwiftでUIButtonイメージを変更する方法


111

Swiftを使用してUIButtonの画像を変更しようとしています...どうすればよいですか

これはOBJ-Cコードですが、Swiftではわかりません:

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

回答:


320

あなたの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)

7
imageが表示されるまで、
buttonWithType

8
Swift 3構文をお探しの方: playButton.setImage(UIImage(named: "play.png"), for: .normal)
ダスティンセノス'19

11

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

9

これはあなたのUIButton Nameような接続されていると仮定します

@IBOutlet var btn_refresh: UIButton!

3つのモードで画像を直接配置できます

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

ボタンのアクションがある場合は、ボタンをアウトレットとして設定する必要はありません。ボタンパラメータsenderはボタンへの参照なので、「let yourButton = sender as!UIButton」を実行し、必要に応じてボタンに変更を加えることができます。
Micah Montoya

7

Assets.xcassetsとSwift 3を使用している人にとっては、このようになります(.pngは不要です)

let buttonDone  = UIButton(type: .Custom)

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

6

Swift 3.0以降、通常の状態は削除されました。以下を使用して通常の状態を適用できます。

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

5

最初に変数を初期化する方法を優先します。

let playButton:UIButton!
var image:UIImage!

そしてそれらをviewDidLoadに設定します

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

4

はい、フラグを使用して、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)
    }

}

ここでは、クリックするたびにボタンの画像が変わります。


2

Swift 5では、画像がボタンのサイズに合わせて拡大縮小されますが、ボタンの境界内にとどまります。

yourButton.clipsToBounds = true
yourButton.contentMode = .scaleAspectFill

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

1

実際にこれを行うには、ボタンを強調表示し、右側のツールバーのインスペクタ内で画像を更新します。明らかにあなたは以前に述べたようにコードでもそれを行うことができますが、これはあなたのための別のオプションです


これは実際には機能しません。画像はどこで更新しますか?ハイライト、選択済みなどのさまざまな状態について話している場合、それはそこで機能しません
KFDoom

1

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

    }
}

1

スウィフト5

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.