Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/98.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在Swift中更改UIButton图像_Ios_Xcode_Swift_Uibutton - Fatal编程技术网

Ios 如何在Swift中更改UIButton图像

Ios 如何在Swift中更改UIButton图像,ios,xcode,swift,uibutton,Ios,Xcode,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(name

我正在尝试使用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)

实际上,您可以通过高亮显示按钮来完成此操作,并在右侧工具栏上的insepctor中更新图像。显然,您也可以像前面所述那样在代码中执行此操作,但这是您的另一个选项

我更喜欢先在顶部初始化变量的方法:

let playButton:UIButton!
var image:UIImage!
然后在viewDidLoad中设置它们

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

假设这是您连接的
ui按钮名
like

@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 3.0开始。正常状态已被删除。您可以使用以下命令应用正常状态

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

对于任何使用Assets.xcsets和swift3的人来说,都是这样的(不需要.png)


在swift 3.0中

@IBOutlet weak var selectionButton: UIButton!

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

是的,我们甚至可以通过使用flag来更改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)
    }

}
在这里,每次单击按钮后,您的按钮图像将交替更改。

在Swift 4中,(代码9) 打开或关闭按钮图片(btnRec)的示例:


在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 5并确保图像缩放到按钮大小,但保持在按钮边界内

yourButton.clipsToBounds = true
yourButton.contentMode = .scaleAspectFill

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

Swift 5

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

您应该将buttonWithType设置为UIButtonType.Custom,在图像显示之前不设置为System对于那些寻找Swift 3语法的人:
playButton.setImage(UIImage(名为:“play.png”),例如:.normal)
如果您对按钮有操作,则不需要将按钮设置为出口。button参数sender是对按钮的引用,因此您只需执行“let yourButton=sender as!UIButton”,然后根据需要对按钮进行更改。这实际上不起作用。在哪里更新图像?如果你说的是不同的状态,如高亮显示、选中等,它在那里不起作用,
yourButton.clipsToBounds = true
yourButton.contentMode = .scaleAspectFill

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