点击时如何将播放按钮更改为暂停按钮?

0 uibutton ios swift

我需要将播放按钮更改为暂停按钮,反之亦然.我还是新手,所以我不知道如何识别.swift文件中的按钮或如何在文件中以编程方式更改图标.swift.

import UIKit
import AVFoundation

class ViewController: UIViewController {

    var player = AVAudioPlayer()

    var toggleState = 1

    @IBAction func playPauseButton(sender: AnyObject) {
        if toggleState == 1 {
            player.play()
            toggleState = 2
        } else {
            player.pause()
            toggleState = 1
        }
    }

    @IBAction func stopButton(sender: AnyObject) {
        player.stop()
        player.currentTime = 0 
    }

    @IBAction func sliderChanged(sender: AnyObject) {
        player.volume = sliderValue.value
    }

    @IBOutlet weak var sliderValue: UISlider!

    override func viewDidLoad() {
        super.viewDidLoad()

        var audioPath = NSBundle.mainBundle().pathForResource("StarWars", ofType: "mp3")!
        var error: NSError?

        player = AVAudioPlayer(contentsOfURL: NSURL(string: audioPath), error: &error)
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    }
}
Run Code Online (Sandbox Code Playgroud)

chr*_*ram 10

您可以根据状态更改按钮的图像:

@IBAction func playPauseButton(sender: AnyObject) {
        var playBtn = sender as UIButton
        if toggleState == 1 {
            player.play()
            toggleState = 2
            playBtn.setImage(UIImage(named:"pause.png"),forState:UIControlState.Normal)
        } else {
            player.pause()
            toggleState = 1           
            playBtn.setImage(UIImage(named:"play.png"),forState:UIControlState.Normal)
        }
    }
Run Code Online (Sandbox Code Playgroud)

sender传递给它的对象playPauseButton是调用方法的UIButton.因为它是作为类型的对象发送的,所以AnyObject我们将其转换为UIButton.如果你不想投它,并确保只有一个UIButton会调用这个方法,你可以简单地替换AnyObjectUIButton的功能参数.