Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/44.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 使用叠加视图制作MPMoviePlayer的更好方法_Iphone_Ios4_Ipad_Mpmovieplayercontroller_Mpmovieplayer - Fatal编程技术网

Iphone 使用叠加视图制作MPMoviePlayer的更好方法

Iphone 使用叠加视图制作MPMoviePlayer的更好方法,iphone,ios4,ipad,mpmovieplayercontroller,mpmovieplayer,Iphone,Ios4,Ipad,Mpmovieplayercontroller,Mpmovieplayer,当我们使用MPMoviePlayer(在自定义UIViewController中)创建应用程序时,在movie player之上使用overlay UIViewController有什么更好的方法: -使用self.view.presentModalView在播放器中加载电影。。。或self.view.addSubView。。。 或者还有其他更好的方法吗。我现在使用模态视图,除了实现一些自定义旋转之外,其他一切都可以正常工作。我正在寻找更清晰的方法来实现这一点 好的,也许还有更多的细节。在iPh

当我们使用MPMoviePlayer(在自定义UIViewController中)创建应用程序时,在movie player之上使用overlay UIViewController有什么更好的方法: -使用self.view.presentModalView在播放器中加载电影。。。或self.view.addSubView。。。 或者还有其他更好的方法吗。我现在使用模态视图,除了实现一些自定义旋转之外,其他一切都可以正常工作。我正在寻找更清晰的方法来实现这一点


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

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

简单而优雅的解决方案:


不要使用“真实”全屏模式,而是将MPMoviePlayerController的视图缩放到屏幕填充大小-
MPMoviePlayerController.view.frame=CGRectMake(0.0f、0.0f、768.0f、1024.0f)。将MPMoviePlayerController的
视图
放在允许旋转的常规
UIViewController的
视图
上(添加子视图)。将您的自定义界面视图置于MPMoviePlayerController视图(addSubview)和presto的顶部,无论您是否在“全屏”下运行,您都将获得一个正确旋转的视频播放器。

根据上述内容,我做了如下操作:

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];

其实很简单!只需将“控制样式”选择为“无”,并将低透明度视图添加到“播放器”视图中。

这个问题太宽泛,太有争议了。没有更好的办法了。有些选项适用于某些情况。我希望得到一些关于其他人如何使用叠加视图添加播放器的示例。我添加了更多相关信息。您了解委派的原则吗?我了解了委派。但我不知道这对我有什么帮助:(