我想做与相机应用程序相同的操作:看起来只支持纵向模式,但是当您旋转某些视图时,工具栏和一些控件在同一个位置时会旋转。
我试图禁用 PLIST 文件中所有支持的方向,但这不会调用诸如 shouldRotate 之类的委托方法,或者显然,将调用 willRotate 来执行方向更改。
当支持的方向在 PLIST 中时,iPhone 会旋转所有视图,即使我为 shouldRotate 方法返回 NO。
如何解决这样的困境?
我想做与相机应用程序相同的操作:看起来只支持纵向模式,但是当您旋转某些视图时,工具栏和一些控件在同一个位置时会旋转。
我试图禁用 PLIST 文件中所有支持的方向,但这不会调用诸如 shouldRotate 之类的委托方法,或者显然,将调用 willRotate 来执行方向更改。
当支持的方向在 PLIST 中时,iPhone 会旋转所有视图,即使我为 shouldRotate 方法返回 NO。
如何解决这样的困境?
在 中info.plist
,将唯一支持的方向设置为Portrait
。然后,在你的viewDidLoad
方法中,添加:
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(didRotate:) name:UIDeviceOrientationDidChangeNotification object:nil];
这将调用该方法:
- (void)didRotate:(NSNotification *)aNotification; {
UIDeviceOrientation currentDeviceOrientation = [[UIDevice currentDevice] orientation];
switch(currentDeviceOrientation){
case UIDeviceOrientationPortrait:
break;
case UIDeviceOrientationPortraitUpsideDown:
break;
case UIDeviceOrientationLandscapeLeft:
break;
case UIDeviceOrientationLandscapeRight:
break;
default:
break;
}
}
从那里,您可以根据任何选项做任何您想做的事情。另外,不要忘记添加:
[[NSNotificationCenter defaultCenter] removeObserver:self name:UIDeviceOrientationDidChangeNotification object:nil];
给你 dealloc 方法。希望有帮助!