IPhoneの向きを取得する特別な方法はありますか?度やラジアンでは必要ありません。UIInterfaceOrientationオブジェクトを返すようにします。 if-else構造のように必要なだけです
if(currentOrientation==UIInterfaceOrientationPortrait ||currentOrientation==UIInterfaceOrientationPortraitUpsideDown) {
//Code
}
if (currentOrientation==UIInterfaceOrientationLandscapeRight ||currentOrientation==UIInterfaceOrientationLandscapeLeft ) {
//Code
}
前もって感謝します!
これはおそらくあなたが望むものです:
UIInterfaceOrientation interfaceOrientation = [[UIApplication sharedApplication] statusBarOrientation];
その後、次のようなシステムマクロを使用できます。
if (UIInterfaceOrientationIsPortrait(interfaceOrientation))
{
}
デバイスの向きを使用する場合:
UIDeviceOrientation deviceOrientation = [[UIDevice currentDevice] orientation];
これには、UIDeviceOrientationFaceUp
やUIDeviceOrientationFaceDown
などの列挙が含まれます
他の回答で説明したように、deviceOrientationではなくinterfaceOrientationが必要です。
これに到達する最も簡単な方法は、UIViewControllerでプロパティinterfaceOrientationを使用することです。 (だからほとんどの場合、ちょうど:self.interfaceOrientationが行います)。
可能な値は次のとおりです。
UIInterfaceOrientationPortrait = UIDeviceOrientationPortrait,
UIInterfaceOrientationPortraitUpsideDown = UIDeviceOrientationPortraitUpsideDown,
UIInterfaceOrientationLandscapeLeft = UIDeviceOrientationLandscapeRight,
UIInterfaceOrientationLandscapeRight = UIDeviceOrientationLandscapeLeft
要確認:デバイスを右に回すと左向きになります。
これは、方向が変更されたときにルートビューに戻ってくる奇妙な問題を取得していたために、私が記述しなければならなかったコードのスニペットです。 ...これは素晴らしいエラーなしで動作します
- (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");
}
}
UIInterfaceOrientation
は非推奨になり、UIDeviceOrientation
にはUIDeviceOrientationFaceUp
とUIDeviceOrientationFaceDown
が含まれるため、インターフェイスの向きを示すことはできません。
解決策は非常に簡単ですが
if (CGRectGetWidth(self.view.bounds) > CGRectGetHeight(self.view.bounds)) {
// Landscape
} else {
// Portrait
}