Dan*_*pov 10 objective-c screen-orientation uiinterfaceorientation ios
我的应用程序中的所有视图控制器仅在纵向工作,除了可以是纵向或横向的视图控制器.
我有一些使用场景如下:
执行这些操作后,应用程序将保持横向方向,并且不会自动将其更改为纵向.
我使用supportedInterfaceOrientations控制视图控制器方向(我使用的是iOS 6.0).我做错了什么?当用户按下后退按钮时应用程序自动将方向更改为允许时,如何才能获得正确的行为?谢谢你的答案!
小智 2
在 iOS 6(可能更早)中,如果设备旋转时视图控制器位于屏幕外,它不会收到任何通知。willAnimateRotationToInterfaceOrientation:duration:当它成为顶视图控制器时也不会被发送。
您需要跟踪视图控制器的当前方向并检查 中的设备方向viewWillAppear:。如果它们不同,您可以使用willAnimateRotationToInterfaceOrientation:duration:它来正确设置。
由于这是您可能经常做的事情,因此您可能需要创建一个视图控制器继承的通用超类。
典型的解决方案是:
@implementation MyHandlesOffscreenRotationController
{
BOOL isShowingPortrait;
}
- (void) viewDidLoad
{
[super viewDidLoad];
isShowingPortrait = UIInterfaceOrientationIsPortrait(
[[UIApplication sharedApplication] statusBarOrientation]);
}
- (void) viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
BOOL currIsPortrait = UIInterfaceOrientationIsPortrait(
[[UIApplication sharedApplication] statusBarOrientation]);
if ((isShowingPortrait && !currIsPortrait) ||
(!isShowingPortrait && currIsPortrait)) {
[self willAnimateRotationToInterfaceOrientation:
[[UIApplication sharedApplication] statusBarOrientation]
duration:0.0f];
}
}
@end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5986 次 |
| 最近记录: |