屏幕旋转不会旋转回原始状态

时间:2014-07-22 21:40:31

标签: objective-c xcode ios7 uiinterfaceorientation screen-rotation

我正在制作新闻应用,此应用的一大功能就是可以播放视频。所以我在cocoacontrols.com上找到了这个控件:https://github.com/0xced/XCDYouTubeKit

我让这个插件运行良好,但现在问题开始了:

对于这个应用程序,方向必须始终是纵向。没有风景或颠倒。这里的事情是你还需要以肖像方式观看视频。没人想要的东西吗?每个人都想看风景中的视频!

现在我找到了一些帮助我很多的代码并设置XCDYouTubeVideoPlayerViewController可用于纵向和横向:

在我的appDelegate中,我添加了以下代码:

- (NSUInteger)application:(UIApplication *)application supportedInterfaceOrientationsForWindow:(UIWindow *)window
{

    if ([[self.window.rootViewController presentedViewController]
         isKindOfClass:[XCDYouTubeVideoPlayerViewController class]]) {
        return UIInterfaceOrientationMaskAllButUpsideDown;
    } else {

        if ([[self.window.rootViewController presentedViewController]
             isKindOfClass:[UINavigationController class]]) {

            // look for it inside UINavigationController
            UINavigationController *nc = (UINavigationController *)[self.window.rootViewController presentedViewController];

            // is at the top?
            if ([nc.topViewController isKindOfClass:[XCDYouTubeVideoPlayerViewController class]]) {
                return UIInterfaceOrientationMaskAllButUpsideDown;

                // or it's presented from the top?
            } else if ([[nc.topViewController presentedViewController]
                        isKindOfClass:[XCDYouTubeVideoPlayerViewController class]]) {
                return UIInterfaceOrientationMaskAllButUpsideDown;
            }
        }
    }
}

这段代码很好用。视频也可以纵向和横向播放。 现在,当视频以横向结束或用户以横向结束视频并返回视图时,他们来自应用的视图将以横向显示。我必须将我的设备转为纵向设置将保持这种状态。

问题是:如何编辑上述代码,以便在视频以横向结束或用户以横向结束视频时禁用横向。当视频结束并返回时,它只需要以纵向回来!

2 个答案:

答案 0 :(得分:4)

删除该代码!

来自文档:

application:supportedInterfaceOrientationsForWindow:

此方法返回应用程序支持的总界面方向集。在确定是否旋转特定视图控制器时,此方法返回的方向与根视图控制器或最顶层呈现的视图控制器支持的方向相交。应用和视图控制器必须在允许轮换之前达成一致。

如果您没有实现此方法,应用程序会使用应用程序Info.plist的UIInterfaceOrientation键中的值作为默认界面方向。

你应该改用:

- (NSUInteger)supportedInterfaceOrientations

中的

UIViewController

当用户更改设备方向时,系统会在根视图控制器或填充窗口的最顶层显示的视图控制器上调用此方法。如果视图控制器支持新方向,则窗口和视图控制器将旋转到新方向。仅当视图控制器的shouldAutorotate方法返回YES时才调用此方法。

答案 1 :(得分:1)

- (NSUInteger)application:supportedInterfaceOrientationsForWindow中,替换" self.window"用"窗口"。