如何使所有视图仅纵向模式

时间:2012-09-22 02:09:02

标签: objective-c xcode storyboard mpmovieplayercontroller ios6

我正在使用带有xcode 4.5的故事板,在iOS 6上构建应用程序。我在mpvideoviewcontroller中有一个视频。当我观看视频时它会出现景观,但是对于所有其他视图(我喜欢歌曲和新闻),我如何为所有其他标签制作肖像?我只是希望视频在风景中。我有什么遗失的东西吗?每个选项卡上的方向为纵向,在xcode项目摘要屏幕上我左右启用。我为那些我想成为肖像的人添加了这行代码。

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
 {
     return NO;
 }

有什么建议吗?

仅供参考:如果我在Xcode的摘要页面中将方向更改为仅纵向模式,则每个视图都是纵向的,我希望我的视频视图处于横向而非纵向模式。

3 个答案:

答案 0 :(得分:1)

iOS 6在AppDelegate上支持这个

    - (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window {
       // check if you are in video page --> return landscape
       return (isVideoPage)?UIInterfaceOrientationMaskAllButUpsideDown:UIInterfaceOrientationMaskPortrait;
    }

希望有所帮助。

答案 1 :(得分:0)

将该方法更改为仅在纵向模式下返回true:

- (BOOL)shouldAutorotateToInterfaceOrientation (UIInterfaceOrientation)interfaceOrientation {

    return (interfaceOrientation == UIInterfaceOrientationPortrait);
}

答案 2 :(得分:0)

我想你可以做这样的事情在我的代码中,prevLayer是带有视频输入的视图,因为这个对象是AVCapture类型,它有setOrientation,但你可以做一个转换/旋转一定程度来匹配当前的方向,希望它会有所帮助。

-(void) willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {

    switch ([[UIDevice currentDevice]orientation]) {
        case UIDeviceOrientationLandscapeLeft:
            [self.prevLayer setOrientation:AVCaptureVideoOrientationLandscapeRight];
            break;
        case UIDeviceOrientationLandscapeRight:
            [self.prevLayer setOrientation:AVCaptureVideoOrientationLandscapeLeft];
            break;
        default:
            [self.prevLayer setOrientation:AVCaptureVideoOrientationLandscapeLeft];
            break;
    }

}