在ViewController中旋转单个视图

时间:2014-10-21 11:10:28

标签: ios objective-c iphone ios8

在我的iOS 7/8应用程序中,我有几个viewcontrollers,所有这些都应该是肖像。我有一个视图控制器,它有一个全屏视图,可以播放视频。我需要这个视图才能根据手机的方向旋转。但是,不允许包含视频视图的视图控制器旋转,原因是有些其他视图有时会覆盖在全屏视频视图上方,这些视图是视图控制器的一部分,并且这些视图不应该旋转。

那么如何旋转单个视图以及如何获知设备的方向已更改。通常的[UIApplication sharedApplication] .statusBarOrientation不起作用,因为viewcontroller本身不会旋转。

如何解决这个问题。

谢谢

1 个答案:

答案 0 :(得分:0)

您无法强行旋转屏幕。还有另一种方法,在你的情况下,你拥有Portrait中的所有屏幕,你需要一个可以双向旋转的ViewController。您需要按照以下几个步骤进行操作。

有关您需要在Build Settings

中执行的设置,请参阅图片

enter image description here

  1. 创建UINavigationController类型的自定义类,说CustomNavController,然后在.m类中添加以下代码。

    -(BOOL)shouldAutorotate{
    
        return YES; 
    }
    
    - (NSUInteger)supportedInterfaceOrientations{
    
         return UIInterfaceOrientationMaskAll; 
    }
    
  2. 使用Modal将视频控制器显示为CustomNavController,如下所示

    VideoViewController *controller=[[VideoViewController alloc] initWithNibName:@"VideoViewController" bundle:nil]; 
    CustomNavController *nav=[[CustomNavController alloc] initWithRootViewController:controller]; 
    [self presentViewController:nav animated:YES completion:nil];
    nav.navigationBar.hidden=YES;
    
  3. 它应该可行,诀窍是分离旋转。