すべてのUIViewControllerには、willRotateToInterfaceというメソッドがあります。UIViewからWillRotateToInterfaceOrientationイベントをキャッチする方法はありますか?
これはUIViewでも可能ですか?
これはモデルビューコントローラのアイデアと一致しますか?
私が考えることができる唯一の方法は、UIViewControllerからイベントをUIViewに送信することです。
現在の方向のグローバル変数はありますか?
すべてのUIViewControllerには、willRotateToInterfaceというメソッドがあります。UIViewからWillRotateToInterfaceOrientationイベントをキャッチする方法はありますか?
これはUIViewでも可能ですか?
これはモデルビューコントローラのアイデアと一致しますか?
私が考えることができる唯一の方法は、UIViewControllerからイベントをUIViewに送信することです。
現在の方向のグローバル変数はありますか?
UIDeviceOrientationDidChangeNotification
を守ってください。
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationDidChange:) name:UIDeviceOrientationDidChangeNotification object:nil];
...
- (void)orientationDidChange:(NSNotification *)note
{
NSLog(@"new orientation = %d", [[UIDevice currentDevice] orientation]);
}
は、私はあなたがこれらの通知を送信する場合によuneedが-beginGeneratingDeviceOrientationNotifications
を追加することに注意してください、とあなたがそれらを停止したいとき-endGeneratingDeviceOrientationNotifications
を呼び出す必要があります。これらを生成することはバッテリーに影響するため、画面上に表示されているときにのみ行うようにしてください。 UIViewController
はすべてこれを行います。したがって、View Controllerをお持ちの場合は、その作業を行う価値があります。
、それは文句を言わない...しかし、あなたのために何かを
[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(didRotate:)
name:@"UIDeviceOrientationDidChangeNotification" object:nil];
あなただけの新しいサイズ/レイアウトするときにビューを調整したい場合オリエンテーションが変更されたら、layoutSubviews
メソッドをオーバーライドするだけです。
ビューのサイズが変わるたびに呼び出されます。これは、通常、ビューを回転させると発生します。
これは、layoutSubviews呼び出しで行われた変更がアニメーション可能であった場合の完璧な解決策です。 –