iPhoneアプリ開発日記 -2ページ目

iPhoneアプリ開発日記

アプリ開発に関するいろいろな事

「しふと暦」の広告がついて機能が制限された無料版のアプリ「しふと暦Lite」がリリースされました!!


「しふと暦」との違いは

・広告がついています。
・予定の追加・変更・削除ができません。

です。
あとは基本的に「しふと暦」と同じです。


よろしくお願いします!!


「しふと暦」1.2 がリリースされました。

変更点は
・ツールバーを隠す設定を追加
・バグフィックス

です。

アップロードからリリースまでが早かったです。いつもなら審査に1週間ぐらいかかりますが、3日間しかかかってないです。ただいつもなら「in Review」から5分くらいで「Ready for Sale」になるのに今回は4時間もかかってリジェクトになったかなーとドキドキでした。


本日「しふと暦」1.2をアップロードしました。変更点は「ツールバーを隠せる設定を追加」です。リリースされ次第また報告したいと思います。

今回のアップデートはもっと早く提出できる予定でしたが、ハマってしまって遅くなってしまいました。まだまだ勉強が足りないです。

次回は「しふと暦」の広告付き無料版をリリース予定です。


先日の記事でアニメーションするボタンを追加し、あれから実機でいろいろテストしてた。順調かなーと思ってたが、バグが!!

「しふと暦」を起動したあとホームボタンでバックグランドに移行
   ↓
いろんなアプリを起動してある程度メモリを消費
   ↓
「しふと暦」をまた起動(フォアグランド)すると

なぜか矢印が重なって表示される・・・。

メモリ消費したあとだからボタンを貼付けているViewControllerの「didReceiveMemoryWarning」や「viewDidUnload」が呼ばれて、再表示とともに「loadView」がまた呼ばれたのかなと思い、「didReceiveMemoryWarning」にボタンのリリース処理を書いてもダメ。「loadView」でボタンを貼付ける前にボタンのリリース処理をかいてもダメ。(そもそもiOS6では「viewDidUnload」が呼ばれないので「loadView」も呼ばれない、らしい。)その他にもUIViewControllerのライフサイクルを調べてViewControllerでいろいろやってみたがダメだった。

ハマったなーと思い何気にViewControllerとボタンのデリケードにLogを入れてみてみたら、「あれ、フォアグランドに戻ってからはボタンのdrawRectしか呼ばれてない・・・」!!てっきりメモリ関連のことなので原因はViewControllerにあると思ってたけどボタンのほうだった。

そのあとは矢印レイヤーを貼付ける前に「self.layer.sublayers = nil;」の処理でサブレイヤーを初期化したら問題は解決した。たったこの一行で・・・。

ハマるってこわい。

「しふと暦」はカレンダー画面で下部にツールバーを常に表示していた。でもツールバーがある分、予定を表示しているスペースが狭くなっていた。そこで今回はツールバーの表示/非表示を切り替えるボタンを追加してみた。もちろん今まで通り常に表示することもできるようにしていて、設定で切り替える事ができる。

そこでこの「ボタン」だが、押すごとに矢印が上向き・下向きとアニメーションするようにしたいと思い調べた。以下は調べた時のメモ。
  • 「UIControl」から継承したサブクラスにする。
  • 「drawRect」メソッドでボタンの外観を描画。
  • 今回は矢印だけをアニメーションさせたいので矢印はレイヤーに描画し、親のレイヤーに追加。(CGContextに描画だとボタン全体がアニメーションする)
  • 矢印のレイヤーを指定するため「setValue:forKey:」を設定しておく。(「CaLayer」には「tag」のプロパティがないため。)
  • ボタンが押された時は「endTrackingWithTouch:withEvent:」が呼ばれるので、そこで矢印のレイヤーを回転する。(回転するコードを書くと簡易アニメーションする)

これで「ボタン」も実装できた。