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
{
//ここに回転前の処理を色々書く
}
ただこの方法だと、取得できるのは回転後のサイズだったりするので、
回転前の値はどっか変数で保持しとかないといけない。。
なんか方法ないかの〜?
でわでわノシ