開発メモ

開発関係のメモをいろいろと。たぶん。

再生状況に応じて、ボタンの状態を変更

動作を確認した環境

環境 情報
Xcode 6.3.2 (6D2105)
iOS 8.3
Swift 1.2
Date 2015/6/5

再生状況に応じて、ボタンの状態を変更

曲の変更と同様に、再生状況の通知にも対応しておく。やっていることは、曲の情報が変化した時とほぼ同じ。たぶん。

MusicPlayer管理クラスで再生状況が変化した時のイベントに対応。

import UIKit

class MusicPlayerAdmin: SK4MusicPlayerAdmin {

    weak var viewController: ViewController?

    /// アイテムが変更になった
    override func onPlayItemChanged() {
        viewController?.updatePlayInfo()
    }

    /// 再生状況が変化した
    override func onPlaybackStateChanged() {
        viewController?.updatePlayState()
    }

}

ViewController側の更新処理はこんな感じ。

    @IBOutlet weak var pauseButton: UIBarButtonItem!
    @IBOutlet weak var playButton: UIBarButtonItem!

    /// 再生状況を画面に反映
    func updatePlayState() {
        let flag = g_musicPlayer.isPlaying()
        pauseButton.enabled = flag
        playButton.enabled = !flag
    }

あらかじめ、PauseとPlayで使用するボタンを接続しておく。

SK4MusicPlayerAdminのisPlaying()はこんな感じ。

    /// 再生中か?
    func isPlaying() -> Bool {

        // FIXME: 問題が残る実装

        if player.playbackState == .Playing {
            return true
        } else {
            return false
        }
    }

コメントにも書いたように、こんな単純な処理でも問題が残るんだけど・・・ この部分の対応はまた今度。

一時停止してる場合はこんな感じ。

f:id:see_ku:20150605123959p:plain

再生中はこんな感じ。

f:id:see_ku:20150605124010p:plain

https://itunes.apple.com/jp/app/cross-sum-100/id981012596?mt=8&uo=4&at=10l8JW&ct=hatenablog