是否有特殊的方法来获取iPhone定位?我不需要它在度或弧度,我希望它返回UIInterfaceOrientation对象。我只需要像
这样的if-else结构if(currentOrientation==UIInterfaceOrientationPortrait ||currentOrientation==UIInterfaceOrientationPortraitUpsideDown) {
//Code
}
if (currentOrientation==UIInterfaceOrientationLandscapeRight ||currentOrientation==UIInterfaceOrientationLandscapeLeft ) {
//Code
}
提前致谢!
答案 0 :(得分:114)
这很可能是你想要的:
UIInterfaceOrientation interfaceOrientation = [[UIApplication sharedApplication] statusBarOrientation];
然后您可以使用系统宏,如:
if (UIInterfaceOrientationIsPortrait(interfaceOrientation))
{
}
如果您想使用设备方向:
UIDeviceOrientation deviceOrientation = [[UIDevice currentDevice] orientation];
这包括UIDeviceOrientationFaceUp
和UIDeviceOrientationFaceDown
答案 1 :(得分:11)
如其他答案所述,您需要interfaceOrientation,而不是deviceOrientation。
最简单的方法是在UIViewController上使用属性interfaceOrientation。 (所以大多数情况下,只是:self.interfaceOrientation会这样做。)
可能的值是:
UIInterfaceOrientationPortrait = UIDeviceOrientationPortrait,
UIInterfaceOrientationPortraitUpsideDown = UIDeviceOrientationPortraitUpsideDown,
UIInterfaceOrientationLandscapeLeft = UIDeviceOrientationLandscapeRight,
UIInterfaceOrientationLandscapeRight = UIDeviceOrientationLandscapeLeft
记住: 通过将设备向右转动进入左方向。
答案 2 :(得分: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");
}
}
答案 3 :(得分:1)
UIInterfaceOrientation
现已弃用,UIDeviceOrientation
包含UIDeviceOrientationFaceUp
和UIDeviceOrientationFaceDown
,因此无法依赖于界面方向。
虽然解决方案非常简单
if (CGRectGetWidth(self.view.bounds) > CGRectGetHeight(self.view.bounds)) {
// Landscape
} else {
// Portrait
}
答案 4 :(得分:0)
不建议使用[UIApplication statusBarOrientation]
,现在应该使用:
UIWindowScene *activeWindow = (UIWindowScene *)[[[UIApplication sharedApplication] windows] firstObject];
UIInterfaceOrientation orientation = [activeWindow interfaceOrientation] ?: UIInterfaceOrientationPortrait;