dnjiro’s 9VAe blog

誰でもアニメが作れる無料ソフト9VAeきゅうべえ開発者のブログ

タイマー描画するサンプルプログラム発見

9VAeきゅうべえをiPadに移植する為に、タイマー描画させる必要があるが、その方法がわからなかった。 以下の記事が参考になりそうだ。

https://ja.stackoverflow.com/questions/34903/アナログ時計が毎秒ごとに更新されない

キーワードは、「self.clockView.setNeedsDisplay()」これで、画面の再描画を行う。画面の書き直しが行われたら、コンテスキストを取得して、そこに、9VAeきゅうべえの描画を行う。

なるほど。

と思ったが、うまく行かず! タイマーで SetNeedsDisplay を呼ぶと、1回目はちゃんと書くが、2回目から書かない。 下の記事を調査

qiita.com

なんか、わかってきたような気がするぞ。まず、次の2つがある。

  1. UIView
  2. UIViewController

SetNeedsDisplay は、UIViewController のメソッドで、UIViewを表示させる。 この時、viewWillAppearが、1回呼ばれるが、これは最初に表示するときしか呼ばれない。 だから、viewWillAppearの中に、9VAeの描画を入れてもだめ。

そのあと、毎回、再描画しているかもしれないが、それは、UIView drawRect が呼ばれている。 この中に、9VAeの描画を入れるには、カスタム UIViewを作らないといけない。

UIViewController の中にタッチイベント処理があるので、UIViewControllerだけで処理できると簡単。

サンプルでは、UIViewとしてMainとTempの2つの画像を使っており、カスタムViewは使っていない。

Tempの画像を毎回作成すれば、viewWillAppearが毎回呼ばれるのではないか? と思ったが、うまく行かず。カスタムViewを作るしかないか・・・