DMDパノラマアプリについて言及しています。
ご覧のとおり、この画像の上部に陰陽のシンボルがあります。
デバイスを回転させると、以下のように 2 つのシンボルが近づきます。
デバイスが回転したときにこれら 2 つの画像が近づくように、デバイスの回転を検出する方法を教えてください。
ご回答ありがとうございます。
DMDパノラマアプリについて言及しています。
ご覧のとおり、この画像の上部に陰陽のシンボルがあります。
デバイスを回転させると、以下のように 2 つのシンボルが近づきます。
デバイスが回転したときにこれら 2 つの画像が近づくように、デバイスの回転を検出する方法を教えてください。
ご回答ありがとうございます。
viewWillAppear 関数に通知機能を追加する
-(void)viewWillAppear:(BOOL)animated{
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(orientationChanged:) name:UIDeviceOrientationDidChangeNotification object:nil];}
向きの変更は、この関数に通知します
- (void)orientationChanged:(NSNotification *)notification{
[self adjustViewsForOrientation:[[UIApplication sharedApplication] statusBarOrientation]];}
これは、moviePlayerController フレームの向きが処理されるこの関数を呼び出します。
- (void) adjustViewsForOrientation:(UIInterfaceOrientation) orientation {
if (orientation == UIInterfaceOrientationPortrait || orientation == UIInterfaceOrientationPortraitUpsideDown)
{
//load the portrait view
}
else if (orientation == UIInterfaceOrientationLandscapeLeft || orientation == UIInterfaceOrientationLandscapeRight)
{
//load the landscape view
}}
viewDidDisappear で通知を削除する
-(void)viewDidDisappear:(BOOL)animated{
[[NSNotificationCenter defaultCenter]removeObserver:self name:UIDeviceOrientationDidChangeNotification object:nil];}
まず、通知を登録します
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(detectDeviceOrientation) name:UIDeviceOrientationDidChangeNotification object:nil];
次に、このメソッドを追加します
-(void) detectDeviceOrientation
{
if (([[UIDevice currentDevice] orientation] == UIDeviceOrientationLandscapeLeft) ||
([[UIDevice currentDevice] orientation] == UIDeviceOrientationLandscapeRight))
{
// Landscape mode
} else if ([[UIDevice currentDevice] orientation] == UIDeviceOrientationPortrait)
{
// portrait mode
}
}
アプリケーションが読み込まれるとき、またはビューが読み込まれるときに、次のことを試してください。
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter]
addObserver:self selector:@selector(orientationChanged:)
name:UIDeviceOrientationDidChangeNotification
object:[UIDevice currentDevice]];
次に、次のメソッドを追加します。
- (void) orientationChanged:(NSNotification *)note
{
UIDevice * device = note.object;
switch(device.orientation)
{
case UIDeviceOrientationPortrait:
/* set frames for images */
break;
case UIDeviceOrientationPortraitUpsideDown:
/* set frames for images */
break;
default:
break;
};
}
上記により、ビューの自動回転を有効にせずに、デバイスの向きの変更を登録できます。