はじめてのiOSアプリ開発

タイマーを使ってカウントダウンを実装しよう(その2)

全333コースを10日間無料で

ぜひご覧ください。

無料で視聴する すべての加入プランを見る
または
タイマーを使って10秒のカウントダウンをする、カウントダウンタイマーの基本機能を実装しましょう。
講師:
09:59

字幕

このレッスンでは タイマーを使って 10 秒間のカウントダウンをするという カウントダウンタイマーの 基本機能を実装します では 現在の状態を確認しておきましょう 現在は まずアプリケーションが起動した直後に 「 viewDidLoad 」が呼ばれる そして「 viewDidLoad 」の中で 「 timer 」が 1.0 秒間隔で 繰り返し実行されるように 作成される という形になっています この「 timer 」が繰り返し呼ばれる度に 「 doCountDown 」というメソッドが 同じ名前の「 doCountDown 」 というメソッドが 実行されるようになっています 今は この「 Time!! 」が1秒毎に 表示されるようになっているんですけども ここでカウントダウンの 基本の機能を実装していきたいと思います カウントダウンの機能を実装する時に 2種類やり方があります 1種類目から紹介したいのですけれども 1種類目が この「 timer 」変数の下に 「 int 」型の整数を作って ここに「 count 」というのを作る方法です この「 count 」変数を使って 「 count = 10 」として 「 10 秒間カウントしてくださいね」 と書きます 簡単な話ですけど この「 doCountDown 」が 呼ばれる度に 「 count- - 」と書いて そして自分の「 timeLabel 」に対して 「 setText 」と書いて そして この「 count 」の 内容を表示します 整数の内容を文字列に変換するためには 「 @(count) 」と書いて そして「 .stringValue 」と書く これが一番簡単な方法です まだ カウントが終了した時の 処理は何も書いていませんけど 一度これで実行できることを 確認しておきましょう 実行してみます これでアプリケーションを実行すると ラベルの上に 「9」「8」「7」「6」 「5」「4」「3」「2」「1」 と言うふうに 基本的な機能が 実装できているように見えます そう見えるんですけれども 注意しておいていただきたいのは 本当に正確に 10 秒間が計れているわけではない ということなんですね どういうことかと言うと この「 timer 」というのを 実は 信用しすぎてはいけないということです ここに「 1.0 秒間隔でタイマーを 呼び出してください」と お願いはしているんですけど コンピューターは他にも いろんな処理を行っています 例えば バックグラウンドでは iTunes で音楽を聴いているかもしれないし インターネットの動画が 再生されているかもしれないし その他にもカレンダーが動いていたりとか いろんな操作が後ろで行われています そんな中で本当に厳密に 1.00000 秒に このカウントダウンの メソッドが呼ばれているかと言うと 決してそんなことはないのです なので 10 秒程度だったら 問題ないのですが これが 3分になって 5分になって 更に1時間のカウントダウンをすると 1時間は 60 秒 × 60 分で 3600 秒になりますから かなり誤差が広がっていきます そういうことも考えていくと 実はこの int 型の変数を使った count は使えない ということになりますので この count 変数を使った実装と言うのは 実はできません では その代わりに どうするのかと言いますと まずこのアプリケーションが起動した時に 時間を取得します その時間を基にして 何秒後にアプリケーションが 終了すれば良いのか ということを書きます 実際にそのためのコードを書いてみます アプリケーションが 目標にする時間を保存するために 「 NSDate 」と言うのを使って 「 targetDate 」と言う変数を まず 用意します 今 エラーが出ていますので この「 doCountDown 」のメソッドの中は 一旦削除しておきましょう そして「 viewDidLoad 」の中で この「 timer 」を作成する前の所で 「 targetDate 」 「何秒後に終了するか」というのを この「 targetDate 」を使って セットします どういうふうにするかと言うと まず「 NSDate 」というクラスを使って この「 NSDate 」クラスに 「 date 」というメソッドを呼び出すことで 現在が何月何日の 何時何分何秒かという 現在時刻を保持する 「 date 」と言う変数を 取得することができます この「 date 」を基にして 「 targetDate 」を作り出すことができます 実際にやってみます 「 date 」に対して 「 dateByAddingTimeInterval 」 こう言うメソッドを 呼び出すことができます ここで「 10.0 秒後に― 来る時間は 何時何分何秒ですか」 と保存する 「 targetDate 」を 作ることができます 例えば 現在が1月1日の 12 時 00 分 00 秒でした となると この「 targetDate 」はそこに 10 秒足した 1月1日 12 時 00 分 10 秒 という情報が この「 targetDate 」の中に 入るわけです これによって この「 targetDate 」の中に 今から 10 秒後の未来の 日付と時間が入る訳です これを使って「 doCountDown 」が 呼び出される度に まず 現在の時間を 上の所と一緒ですね 「 NSDate 」の「 date 」を使って 確認します この「 NSDate 」の「 date 」は 呼び出す度に最新のものが 取得できますので これで最新の時間を取得します そして この「 targetDate 」に対して あと何秒あるかということを 次に確認します その為には 「 NSTimeInterval 」という型で 「 interval 」と言うのを取得します そして 「 targetDate 」から 「 timeIntervalSinceDate 」 というのを使って この「 date 」まで 何秒の開きがあるかということを この「 interval 」を使って計算します 実際にこれで実行してみましょう この「 interval 」を表示させるようにします 「 NSLog 」と言うのを使って 「 %f 」でこの「 interval 」を 表示してみましょう こうすると「 timeInterval 」で取得した 「 interval 」を表示できます そうすると 後ろの方を見ていただきますと 「6」「5」「4」「3」「2」「1」 「0」というふうに 目標にしている未来から 現在の時間を引いた時に 後 何秒残っているかということが このメソッドを使うことで 計算できている というのが分かると思います こういうふうに 目標にしている時間を 取得してきて そして この時間が もしも「 interval 」が 0より小さくなったら これで「時間が来たよ」 ということで 時間が来たということを 確かめることができます 実際にこれで タイマーの基本機能が 実装できていますので もう一度 実行して 確かめてみましょう 起動して まだ 何も起こりませんけども 10 秒したところで そろそろですね 「2」「1」「0」 と したところで 丁度 「 Time!! 」になります 「 timer 」はどんどん 繰り返し続けますから 「 interval 」はどんどん 小さくなる一方ですから ずっと表示されていますけど これで 10 秒間経った時に この「 interval 」が 0よりも小さくなる ということで 時間が来たということが 分かるようになりました このレッスンでは この様に「 NSDate 」というクラスを使って 現在の時刻を確認しながら 目標に設定した時刻から 何秒経ったか ということが 正確に計算出来るようになりました

はじめてのiOSアプリ開発

このコースではXcodeを使ったiOS用アプリの開発に必要な基礎知識を学びます。Xcodeの基本的な使い方から本格的なゲーム制作のためのSprite Kitを用いた制作方法まで、カウントダウンタイマーやスピード暗算ゲームなど3つの簡単なiOS用アプリを作りながら説明します。このコースを見れば、本当に必要なアプリ開発の知識を着実に身に付けられるでしょう!

5時間55分 (52 ビデオ)
現在、カスタマーレビューはありません…
 
ソフトウェア・トピック
価格: 2,990
発売日:2015年06月04日

このコースは、「オンデマンド」でご利用可能であり、ダウンロードすることもオンラインで見ることもできます。

ダウンロードすると、オフラインでコースを使用し、豊富なインターフェースをフルに活用できます。複数のデバイスを使用したり、 一度に全コースをダウンロードしたくない場合は、アカントにログインして、ストリーミング・ビデオとしてコースのレッスンを視聴してください。

ビデオトレーニングをお楽しみいただけますように! お問い合わせは、cs-jp@lynda.com宛までご連絡ください。