iOSデバイスの回転前を検出してみる

やぁ。鳥のようなものだ。
もしかしたら島かも知れないし烏かもしr(ry
あ、毎度うるさいですねすみません(´・ω・`)

今日はチマっとした記事だよん。

iOSバイスiPhoneとかiPadとか)の回転後を検知するには、
EZ-NET: iPhone デバイスの回転を検出する : Objective-C プログラミング辺りを
参考にすれば上手くいくんだけど、回転の検知前に、
ビューのリサイズとか、スクロールとか、なんか色々と発生するわけさ。

それを差っ引いても、回転に色々やりたいよね。

ビューが一番上のビューなら、ビューコントローラー(UIViewController)に
ふつーに「willAnimateRotationToInterfaceOrientation」を書いてやれば検出できる。

でも、トップビューでない場合、回転の検出がなぜか出来ない(ぉぃ
そこで、以下のコードを書いてやれば検出できるようになったさ。

ヘッダーに以下。
- (void) updateLayoutForNewOrientation: (UIInterfaceOrientation) orientation;

実装に以下。
- (void) viewWillAppear: (BOOL) animated {
  [super viewWillAppear: animated];
  [self updateLayoutForNewOrientation: self.interfaceOrientation];
}

- (void) willAnimateRotationToInterfaceOrientation: (UIInterfaceOrientation) interfaceOrientation duration: (NSTimeInterval) duration
{
  [self updateLayoutForNewOrientation: interfaceOrientation];
}

- (void) updateLayoutForNewOrientation: (UIInterfaceOrientation) orientation
{
  //ここに回転前の処理を色々書く
}

ただこの方法だと、取得できるのは回転後のサイズだったりするので、
回転前の値はどっか変数で保持しとかないといけない。。
なんか方法ないかの〜?

参考)
iphone - willAnimateRotationToInterfaceOrientation not called on popViewControllerAnimated - Stack Overflow

でわでわノシ