ねこアプリ(その2、スペシャルバージョン)
今日は「ねこアプリ」の完成までやりました。
前回タップ・ジェスチャー・レコグナイザーを使って、画面のどこかをダブルタップしたら猫の画像が入れ替わるプログラミングをしました。
今回は、スワイプ・ジェスチャー・レコグナイザー、ピンチ・ジェスチャー・レコグナイザーを使って、スワイプしたら猫が喜んだり、ピンチ(iPhone画面を拡大する時に使うジェスチャー)した時にも別の表情させたりっていうことをしました。
仕組みはタップの時と同じで、全て画像を入れ替えるっていう仕組み。ただ、スワイプとピンチについては画面の特定の場所に対してアクションされた場合ということで場所が限定されています。
ちなみに、xcodeのシミュレーターでスワイプしたりピンチしたりする時の操作は本書では解説されていないので、ググって調べました。
スペシャルバージョンでは、画像の入れ替え時にランダムで入れ替えるだけでは前の画像と同じ時に、一見何も動作していないように見えることから、前の画像と必ず異なる画像が選択されるようにしました。
最初はここの解釈で悩みました。
----------------------------------------
int r;
do {
r = arc4random() % 8;
} while (r == face1);
face1 = r;
[self.catImageView setImage:[UIImage imageNamed:[catImage objectAtIndex:face1]]];
----------------------------------------
これは、whileのところで、rは8つの画像からランダムに選んだもので、face1は前回選ばれた画像という位置づけですね。なので、rとface1が同じ場合はもう1度8つの画像からランダムで取り出すっていうループですね。
rとface1が異なる場合はループを抜けるので、そのままface1を最新のrに上書きして、画像を取り出すということになります。
ここのプログラムについては特に本書では解説されていないので、自分で考える必要があります。
さて、今回これで「ねこアプリ」は終わりなので、次は「時計アプリ」です!
* この記事はこの書籍で勉強しています。