頭と尻尾はくれてやる!

パソコンおやじのiPhoneアプリ・サイト作成・運営日記


EaseInOutっぽく画像を回転させるクラス

画像を360度以上回転させたい
↑動き始めと停止前はゆっくりになるようにして、画像をくるーんと360度回転させるのができない件です。
きっとどこかにライブラリーとかありそうだけど結局自作しました。

MinuteHand - GitHub
↑GitHubに動作が確認できる簡単なプロジェクトまるごと置いてみました。
起動後の画面でボタンを押すとくるりーんと針が回転する、というだけですが。
なお、Xcode 4.3 Developer Preview 3、つまりiOS 5.1 beta 3用で作っているのでビルド時にはターゲット変更等必要かもしれません。


コード的にはタイマーで一定時間ごとに画像の角度を変えることにしました。
時間間隔を変える方法もありそうですが、ここでは一定のタイミングで処理します、まあこっちの方が簡単でしょうから。
UIViewAnimationOptionCurveEaseInOutに相当する最初と最後はゆっくり、というのを考慮するために角速度を以下のように変化させることにしました。

角速度の変化1

横軸が時間t[sec]、縦軸が角速度ω[rad/sec]です。
角速度の最大値とそこに達するまでの時間を決めておきます。とりあえず加速時間と減速時間は同じにしてます。
上図において、台形の面積が回転する角度になるわけです。

なお、このように台形にならないくらい回転角が小さい場合は

角速度の変化2

↑このように立ち上がる角速度の変化が同じようにします。


角度を計算するクラスはRateEaseInOutクラスです(なんてダサイ名前なんだろうね)。
あらかじめこのクラスのオブジェクトをMyViewControllerクラス内で作っています。

スタートボタンをタップするとタイマーがスタート、ステップ数をゼロからカウントしていきます。
RateEaseInOutクラスのメソッドがステップ数に応じた角度を教えてくれます。

とりあえあずそれらしい動きになっているみたいだからよしってことで。
この調子でいくと、時計アプリが完成するのはいつになるやら、、、?


2012年の運勢

ライフログ的にエントリーしておこう。年末に再度見てみると楽しいかも。

2012年おみくじ

↑初詣で引いたおみくじ、今年は大吉だったぜ。
はい、それだけです。


画像を360度以上回転させたい

最近、iPhone/iPod touch用の時計っぽいアプリを作っています。
で、時計の針(長い針=分針)を動かそうとしたのです。

針は単にUIViewのサブクラスのオブジェクトで、次のようなコードを書いてみました。
アニメーションはUIViewのtransitionWithView:duration:options:animations:completion: メソッドを使っています。これ便利ですよね。

[UIView transitionWithView:self.view duration:1.f options:UIViewAnimationOptionCurveEaseInOut 
                    animations:^{
                        minuteHand.transform = CGAffineTransformMakeRotation(M_PI*2.f);
                    }               
                    completion:NULL
];
このコードではUIViewAnimationOptionCurveEaseInOutで、つまり動き始めと停止寸前はゆっくりになるように分針を360度回転させようとしたのですが、いざ実行すると全く動きませんでした。

時計テスト画面
↑これはテスト用画面

いろいろいじっていて気が付いたのですが、よく考えたらこのメソッドって回転方向を指定することもできないし、360度以上は回転しない、、、?
今まではビューの平行移動くらいしか使ったことがなかったので気が付かなかったな。

うーん、これは困った。
なんぞライブラリでも使わないと実現できないのか。





iOS 5.1 beta 3リリース

ぐぬぬ。
iOS 5.1のbeta 3が来ましたなあ。
ってことで、我が愛機iPhone 3GSをiOS 5.1 beta 2から3にOTAでアップデート。
音楽再生中に再起動するような不具合が直っていますように。
3GSだとビルド番号は 9B5141a になってますが他は知りません。

あと、Xcode 4.3 Developer Preview 3も来てましたのでダウンロード。

Xcode 4.3 Developer Preview 3
こちらのビルド番号は 4E71d みたい。

個人的にはリリース済みアプリの修正をしたい部分があるので、早く正式版がリリースされないかなあと思ってたりします。
特に急ぐ訳でもないので、わざわざ戻すつもりもないんですけどね。


AVAudioPlayerクラスでmp3等の音を鳴らしてみる

今までやったことなかったのですが、現在新しく作ってるアプリで初めて音声ファイル(mp3とか)を使って音を鳴らそうとしています。
ということで、基本的なテストからやってみました。
AVAudioPlayerクラスを使えばいいみたいなので、AVFoundation.frameworkを追加しておき、次のようなコードをテスト :
NSBundle *mainBundle = [NSBundle mainBundle];
AVAudioPlayer *audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL URLWithString:[mainBundle pathForResource:@"sound" ofType:@"mp3"]] error:nil];
[audioPlayer prepareToPlay];

[audioPlayer play];

実機だと期待通りに音が鳴るんだけど、なぜかiOS シミュレーターだと音が鳴らない。
なんでだー?




Copyright ©頭と尻尾はくれてやる!. Powered by FC2 Blog. Template by eriraha.

FC2Ad