强制iOS设备更改方向

时间:2015-07-01 10:23:02

标签: ios orientation

首先,我想再次提出同样的问题而道歉,这个问题曾多次在本论坛中提出过。但是,我的问题是我已经尝试了所有建议的解决方案但仍然无法解决我的问题。

我在Potrait模式下有ViewControllerA,在横向模式下有ViewControllerB。当设备从potrait更改为横向时,我可以看到ViewControllerB在横向模式下打开,但是当设备旋转回potrait模式时,显示ViewControllerA但仍处于横向模式。有人可以帮我理解如何以potrait方式显示它?

我尝试过以下事情,但没有任何方法可以帮助我:

ViewControllerA的{​​{1}}中添加了以下代码:

viewWillAppear

还在此视图控制器中添加了以下功能:

[[UIApplication sharedApplication] setStatusBarOrientation:UIInterfaceOrientationPortrait];

3 个答案:

答案 0 :(得分:1)

希望这可以通过使用supportedInterfaceOrientationsForWindow

来帮助您

<强> Appdelegate.h

@property () BOOL restrictRotation;

Appdelegate.m

  -(NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{
    //restrictRotation is BOOL value
     if(self.restrictRotation)//set the bool value to view controller which you want to load in landscape
          return UIInterfaceOrientationMaskLandscape;
     else
       return UIInterfaceOrientationMaskAll;
}

//在您需要的地方调用

<强> requiredViewController.m

-(void) restrictRotation:(BOOL) restriction
{

  appDelegate = (AppDelegate*)[UIApplication sharedApplication].delegate;
  appDelegate.restrictRotation = restriction;
}

//在ViewdidLoad()

- (void)viewDidLoad
 {
   [super viewDidLoad];
   [self restrictRotation:YES];//Set YES if required in Landscape mode
 }

答案 1 :(得分:0)

请尝试

[[UIDevice currentDevice] setValue:[NSNumber numberWithInteger:UIInterfaceOrientationPortrait] forKey:@"orientation"];

答案 2 :(得分:-1)

使用以下代码

-(void) viewDidAppear:(BOOL)animated
{
[UIViewController attemptRotationToDeviceOrientation];
[super viewDidAppear:animated];
}

&安培;也在viewWIllAppear写

[UIDevice currentDevice] setValue:[NSNumber numberWithInteger:UIInterfaceOrientationPortrait] forKey:@"orientation"]