5

当我们使用 MPMoviePlayer(在自定义 UIViewController 中)和覆盖 UIViewController 在电影播放器​​顶部创建应用程序时,更好的是: - 使用 self.view.presentModalView... 或 self.view.addSubView... 在播放器中加载电影或是否存在任何其他更好的方式。我现在使用模态视图,一切正常,除了我必须实现一些自定义旋转。我正在寻找更清晰的方法来做到这一点。

好吧,也许更多的细节。在 iPhone 应用程序中,我添加了模态视图之类的播放器,并向其添加了覆盖视图,这样就可以了。但这是通用应用程序,它在 iPad 上的运行方式与在 iPhone 上的运行方式不同。在 ipad splitView 中,我的播放器位于详细信息一侧(非全屏),当我双击播放器时,它会全屏显示。现在播放器是关键窗口。这是最大的问题。我尝试将叠加视图添加为子视图和模态视图,但我做到了,但叠加不知道设备方向,我必须转换叠加元素,这就是我想要避免的。有什么方法可以检测该视图的旋转吗?

4

3 回答 3

6

简单而优雅的解决方案:

不要使用“真正的”全屏模式,而是将 MPMoviePlayerController 的视图缩放到屏幕填充大小 - MPMoviePlayerController.view.frame = CGRectMake(0.0f, 0.0f, 768.0f, 1024.0f);。将MPMoviePlayerController's放在允许旋转的常规'sview之上(addSubview)。将您的自定义界面视图保持在 MPMoviePlayerController 的视图 (addSubview) 之上,然后,无论您是否以“全屏”模式运行它,您都将获得一个正确旋转的视频播放器。UIViewControllerview

于 2011-05-03T16:02:02.097 回答
0

根据上面我做了这样的事情:

mp = [[MPMoviePlayerController alloc] initWithContentURL:[NSURL URLWithString:@"http://devimages.apple.com/iphone/samples/bipbop/bipbopall.m3u8"]];

mp.movieSourceType = MPMovieSourceTypeStreaming;

mp.view.frame = CGRectMake(0.0f, 0.0f, 1024.0f, 768.0f);

[self.view addSubview:mp.view];

mp.controlStyle = MPMovieControlStyleNone;

[self.view addSubview:self.myOverlay];


[mp play];

其实这很容易!只需将控件样式选择为无,然后在播放器视图中添加低不透明度视图。

于 2012-10-02T22:41:18.710 回答
0

我找到了一个解决方案,但我不是很自豪,因为我认为有更好的方法,但这种解决方法有效: - 在项目中,我有一个包含一些全局数据的单例类。- 当应用程序启动时,首先调用详细视图 (UISplitView)willAnimateRotationToInterfaceOrientation方法。在这里,我获取当前方向并将其存储在单例类中。- 后来当我在播放器顶部添加叠加时,我从单例读取数据并转换叠加元素。

于 2011-04-29T08:55:16.110 回答