開発メモ

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

再生中の曲の情報を表示

動作を確認した環境

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

再生中の曲の情報を表示

まず、曲の情報を表示するためのラベルを用意。

今回は、こんな感じにしてみた。

f:id:see_ku:20150605120245p:plain

曲名を表示するためのUILabelと、アーティスト名とアルバム名を表示するためのUILabelを別々に用意。それぞれ、AutoLayoutまで設定して、ViewControllerと接続しておく。

MusicPlayer管理クラスを継承して、このアプリ専用の管理クラスを作成。アイテム変更のイベントの中で、画面を更新するように修正。

この辺りの実装は、人によってかなり好みが分かれるんじゃないかと。iOSの開発からプログラムを始めてObjective-Cにべったりの人だと、delegateパターンで実装しそう。自分の場合だとクラス単位で機能を独立させるのが好きなので、こんな形に落ち着いた、

import UIKit

class MusicPlayerAdmin: SK4MusicPlayerAdmin {

    weak var viewController: ViewController?

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

}

アプリで使用する管理クラスを入れ替えておく。

let g_musicPlayer = MusicPlayerAdmin()

最終的に呼び出される画面更新処理はこんな感じ。

    @IBOutlet weak var titleLabel: UILabel!
    @IBOutlet weak var detailLabel: UILabel!

    /// 再生中の曲の情報を表示
    func displayPlayInfo() {
        if let item = g_musicPlayer.nowPlayingItem {
            titleLabel.text = item.title
            detailLabel.text = "\(item.artist) - \(item.albumTitle)"
        } else {
            titleLabel.text = "MusicPlayerTips"
            detailLabel.text = ""
        }
    }

もちろん、MusicPlayerAdminのviewControllerを設定する部分とか、元々のSK4MusicPlayerAdminでnowPlayingItemを操作する部分も修正しておく。

何も再生してない状態でアプリを立ち上げると、こんな感じ。

f:id:see_ku:20150605120314p:plain

再生を始めると、各種情報が表示されるはず。

f:id:see_ku:20150605120324p:plain