UIViewController へのポインターがある場合、コントローラーのコードを変更せずに interfaceOrientation が変更されたときに通知を受け取ることはできますか?
デバイスの向きの変化を検出し、UIViewController が回転するかどうかを確認するのが最善の策ですか?
UIViewController へのポインターがある場合、コントローラーのコードを変更せずに interfaceOrientation が変更されたときに通知を受け取ることはできますか?
デバイスの向きの変化を検出し、UIViewController が回転するかどうかを確認するのが最善の策ですか?
NSNotificationCenter を使用できます。
[[NSNotificationCenter defaultCenter] addObserver:self // put here the view controller which has to be notified
selector:@selector(orientationChanged:)
name:@"UIDeviceOrientationDidChangeNotification"
object:nil];
- (void)orientationChanged:(NSNotification *)notification{
UIDeviceOrientation orientation = [[UIDevice currentDevice] orientation];
//do stuff
NSLog(@"Orientation changed");
}
willAnimateRotationToInterfaceOrientation:duration:
UIViewController でこのメソッドを使用してから、UIView (またはその他のコード) を横向きまたは縦向きに再配置できます。例えば
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
if (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft || toInterfaceOrientation == UIInterfaceOrientationLandscapeRight) {
// change positions etc of any UIViews for Landscape
} else {
// change position etc for Portait
}
// forward the rotation to any child view controllers if required
[self.rootViewController willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration];
}