这里有一个菜鸟问题。
我用以下方法检测方向:
UIInterfaceOrientation orientation = [[UIDevice currentDevice] orientation];
一切都很好,花花公子,我根据报告的方向
重新定位我的文本字段和标签 if (orientation == UIDeviceOrientationPortrait || orientation == UIDeviceOrientationPortraitUpsideDown)
以及其他一切的其他内容
我最近才发现的问题是UIDevice
报告UIDeviceOrientationFaceUp
或UIDeviceOrientationFaceDown
时的问题。我该如何处理这种情况?我怎么知道纵向或风景中是否发生了UIDeviceOrientationFaceUp
和UIDeviceOrientationFaceDown
?我知道设备正朝上或朝下,但我不知道是否应该将所有内容重新定位为纵向或横向。
答案 0 :(得分:33)
Apple建议不要使用设备方向进行视图布局。相反,每个视图控制器都具有interfaceOrientation属性,而UIApplication
具有statusBarOrientation属性,这两个属性都将返回当前接口方向,这适用于视图布局。
要监控更改,我们会调用UIViewController
个{{1}}方法以及willRotateToInterfaceOrientation:duration:等通知,这些方法会在界面方向发生变化时发布。
答案 1 :(得分:4)
答案 2 :(得分:0)
有点晚了,希望它会对某人有所帮助。
对于iOS 6.0及更高版本:
1)在视图设置期间设置此代码以接收轮换通知:
// Set Listener to receive orientation notifications from the device
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
[[NSNotificationCenter defaultCenter] addObserver:self
selector:@selector(detectOrientation)
name:UIDeviceOrientationDidChangeNotification
object:nil];
2)设置此代码以捕获旋转后的通知:
-(void)detectOrientation{
switch ([[UIDevice currentDevice] orientation]) {
case UIDeviceOrientationFaceDown:{
NSLog(@"UIDeviceOrientationFaceDown");
break;
}
case UIDeviceOrientationFaceUp:{
NSLog(@"UIDeviceOrientationFaceUp");
break;
}
case UIDeviceOrientationLandscapeLeft:{
NSLog(@"UIDeviceOrientationLandscapeLeft");
break;
}
case UIDeviceOrientationLandscapeRight:{
NSLog(@"UIDeviceOrientationLandscapeRight");
break;
}
case UIDeviceOrientationPortrait:{
NSLog(@"UIDeviceOrientationPortrait");
break;
}
case UIDeviceOrientationPortraitUpsideDown:{
NSLog(@"UIDeviceOrientationPortraitUpsideDown");
break;
}
case UIDeviceOrientationUnknown:{
NSLog(@"UIDeviceOrientationUnknown");
break;
}
default:{
break;
}
}
}
答案 3 :(得分:-1)
我有同样的问题
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
此方法为7种可能的设备位置状态生成通知:
UIDeviceOrientationPortrait
UIDeviceOrientationPortraitUpsideDown
UIDeviceOrientationLandscapeLeft
UIDeviceOrientationLandscapeRight
UIDeviceOrientationFaceUp
UIDeviceOrientationFaceDown
UIDeviceOrientationUnknown
但我只需要前4个,这是我解决这个问题的方法(包括代码): How to handle UIDeviceOrientation for manage views layouts