0

DMDパノラマアプリについて言及しています。

ご覧のとおり、この画像の上部に陰陽のシンボルがあります。

ここに画像の説明を入力

デバイスを回転させると、以下のように 2 つのシンボルが近づきます。

ここに画像の説明を入力

デバイスが回転したときにこれら 2 つの画像が近づくように、デバイスの回転を検出する方法を教えてください。

ご回答ありがとうございます。

4

3 に答える 3

5

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];}
于 2013-10-01T06:15:55.440 に答える
1

まず、通知を登録します

[[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
    }   
}
于 2013-10-01T06:19:42.647 に答える
0

アプリケーションが読み込まれるとき、またはビューが読み込まれるときに、次のことを試してください。

[[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;
   };
}

上記により、ビューの自動回転を有効にせずに、デバイスの向きの変更を登録できます。

于 2013-10-01T07:29:39.387 に答える