【iPhone】iPodみたいに残り時間/経過時間を表示させる
はるばる山形まで免許をとりにいってたりしたので、ブログの更新がだいぶ久しぶりになってしまった。
ちなみに山形(米沢)は震災の影響もほとんどなく、余震も東京より少ないぐらいでした。
で、泊まってるビジネスホテルでしこしこ開発をしてたはしてたんだけど、
やっぱり毎日疲れてくるのもあって効率はめっちゃ悪かった。
何してたかというと「純正iPodに限りなく近い音楽再生アプリ」を作ってました。
iPodの音楽を同期して再生するにはMediaPlayerフレームワークがあるけど、それとは別です。
こちらで用意した音楽をiPodとおんなじ感じで再生したり一時停止したりループさせたりするのは割と手間だったので、それについてちょっと書いておきます。
・・・といっても、今日の所はiPodに表示される「現在の再生時間」と「曲の残り時間」をどう表示するかのtipsしか書きませんが。
だってその他の所は他の人のブログ見ればわかるんだもん(-_-#)
ググってみつからなかったスキマ産業をついていきますw
・とりあえず今日書く内容
赤い丸印の所をどうやって書くかだけ載せときます
・本題:どういうコード?
いちいち解説するまでもないので、どーんとのっけます。
もともと気持ち悪いくらいコメントついてるしw
-(void)updateLabel{
int current = audio.currentTime;//currentTimeはfloatなのでintに直さないと計算できないみたいだった
int duration = audio.duration;
int minute = current/60;//現在時間÷60で「分」の部分。
int sec = current%60;//現在時間÷60の剰余算で「秒」の部分。
int lastMinute = (current-duration)/60;
//↑残り時間は「現在時間ー曲の長さ」で計算。「曲の長さー現在時間」でもいいけどこの計算方式だと
//「−」が出力されるのでいい感じ
int lastSec = abs((current-duration)%60);
//これも上と同じ。ここはマイナス出したくないので「曲の長さー現在時間」の方がいいんだが折角なので絶対値で出してる。
keika.text=[NSString stringWithFormat:@"%d:%02d",minute,sec];//上で定義したものをラベルに書く。二桁で。
nokori.text=[NSString stringWithFormat:@"%d:%02d",lastMinute,lastSec];}
もちろんkeikaとnokoriはUILabelで、audioはAVAudioPlayerです。
これでupDateLabelをNSTimerとかで呼べば大丈夫。
一応、「秒」の部分は剰余算でやるのがポイントなのかも。
相変わらず冗漫で気持ち悪くてエレガントのかけらもないけど
まぁでもこれでとりあえず動きますw
次からは「自分の用意した音楽ファイルをiPodと同じように再生・停止・送り・ループさせるにはどうするか」
というのを面倒くさがらずにちゃんと紹介してみようと思います。