44

iPhoneの向きを取得する特別な方法はありますか? 度やラジアンは必要ありません。UIInterfaceOrientation オブジェクトを返す必要があります。次のような if-else 構造に必要なだけです

if(currentOrientation==UIInterfaceOrientationPortrait ||currentOrientation==UIInterfaceOrientationPortraitUpsideDown) {
//Code
}  
if (currentOrientation==UIInterfaceOrientationLandscapeRight ||currentOrientation==UIInterfaceOrientationLandscapeLeft ) {
//Code
}

前もって感謝します!

4

5 に答える 5

118

これはおそらくあなたが望むものです:

UIInterfaceOrientation interfaceOrientation = [[UIApplication sharedApplication] statusBarOrientation];

次に、次のようなシステム マクロを使用できます。

if (UIInterfaceOrientationIsPortrait(interfaceOrientation))
{

}

デバイスの向きが必要な場合は、次を使用します。

UIDeviceOrientation deviceOrientation = [[UIDevice currentDevice] orientation];

UIDeviceOrientationFaceUpこれには、およびのような列挙が含まれます。UIDeviceOrientationFaceDown

于 2010-03-25T19:36:08.773 に答える
11

他の回答で説明したように、deviceOrientation ではなく、interfaceOrientation が必要です。

これに到達する最も簡単な方法は、UIViewController でプロパティ interfaceOrientation を使用することです。(ほとんどの場合、self.interfaceOrientation で十分です)。

可能な値は次のとおりです。

UIInterfaceOrientationPortrait           = UIDeviceOrientationPortrait,
UIInterfaceOrientationPortraitUpsideDown = UIDeviceOrientationPortraitUpsideDown,
UIInterfaceOrientationLandscapeLeft      = UIDeviceOrientationLandscapeRight,
UIInterfaceOrientationLandscapeRight     = UIDeviceOrientationLandscapeLeft

注意: デバイスを右に回すと、左向きになります。

于 2012-02-07T20:53:51.393 に答える
4

これは、向きが変更されたときに奇妙な問題がルートビューに戻ってきたため、作成しなければならなかったコードのスニペットです....呼び出されるはずだったメソッドを呼び出すだけです。 ...これはエラーなしでうまく機能します

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    if ([[UIDevice currentDevice]orientation] == UIInterfaceOrientationLandscapeLeft){
        //do something or rather
        [self 
shouldAutorotateToInterfaceOrientation:UIInterfaceOrientationLandscapeLeft];
        NSLog(@"landscape left");
    }
    if ([[UIDevice currentDevice]orientation] == UIInterfaceOrientationLandscapeRight){
        //do something or rather
        [self 
shouldAutorotateToInterfaceOrientation:UIInterfaceOrientationLandscapeRight];
        NSLog(@"landscape right");
    }
    if ([[UIDevice currentDevice]orientation] == UIInterfaceOrientationPortrait){
        //do something or rather
        [self shouldAutorotateToInterfaceOrientation:UIInterfaceOrientationPortrait];
        NSLog(@"portrait");
    }
}
于 2012-04-16T23:58:29.577 に答える