如何使用@IBAction 函数和观察者更改按钮上的图像
How to change image on button with @IBAction function and an observer
我有一个用于音频播放器的按钮,其功能为 Play/Pause。
@IBAction func playPauseButton(_ sender: UIButton) {
let playBtn = sender
if buttonState == 1 {
audioPlayer.play()
buttonState = 2
playBtn.setImage(UIImage(named:"pause.png"),for:UIControl.State.init())
} else {
audioPlayer.pause()
buttonState = 1
playBtn.setImage(UIImage(named:"play.png"),for:UIControl.State.init())
}
}
和 AVPlayer 的 didLoad 中的观察者:
audioPlayer.addObserver(self, forKeyPath: "rate", options: NSKeyValueObservingOptions.new, context: nil)
如何在 OBSERVE FUNCTION 中更改按钮的图像:
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
if keyPath == "rate" {
if audioPlayer.rate > 0.0 {
print("audio started")
// change button image in "pause"
} else {
print("audio paused")
// change button image in "play"
}
}
}
您可以通过添加 IBOutlet
来引用该按钮。您可以通过按住 ctrl 从故事板拖动到视图控制器代码来创建它,就像您为 IBAction
.
所做的一样
IBOutlet
提供了一个变量来引用按钮(或其他故事板视图)。 IBAction
在与视图交互时触发函数。
示例:
@IBOutlet var yourButton: UIButton!
@IBAction func playPauseButton(_ sender: UIButton) { }
稍后在您的代码中,您可以像这样引用按钮,它将图像更改为您选择的 UIImage
。
yourButton.setImage(image: yourImage, for state: .normal)
我有一个用于音频播放器的按钮,其功能为 Play/Pause。
@IBAction func playPauseButton(_ sender: UIButton) {
let playBtn = sender
if buttonState == 1 {
audioPlayer.play()
buttonState = 2
playBtn.setImage(UIImage(named:"pause.png"),for:UIControl.State.init())
} else {
audioPlayer.pause()
buttonState = 1
playBtn.setImage(UIImage(named:"play.png"),for:UIControl.State.init())
}
}
和 AVPlayer 的 didLoad 中的观察者:
audioPlayer.addObserver(self, forKeyPath: "rate", options: NSKeyValueObservingOptions.new, context: nil)
如何在 OBSERVE FUNCTION 中更改按钮的图像:
override func observeValue(forKeyPath keyPath: String?, of object: Any?, change: [NSKeyValueChangeKey : Any]?, context: UnsafeMutableRawPointer?) {
if keyPath == "rate" {
if audioPlayer.rate > 0.0 {
print("audio started")
// change button image in "pause"
} else {
print("audio paused")
// change button image in "play"
}
}
}
您可以通过添加 IBOutlet
来引用该按钮。您可以通过按住 ctrl 从故事板拖动到视图控制器代码来创建它,就像您为 IBAction
.
IBOutlet
提供了一个变量来引用按钮(或其他故事板视图)。 IBAction
在与视图交互时触发函数。
示例:
@IBOutlet var yourButton: UIButton!
@IBAction func playPauseButton(_ sender: UIButton) { }
稍后在您的代码中,您可以像这样引用按钮,它将图像更改为您选择的 UIImage
。
yourButton.setImage(image: yourImage, for state: .normal)