我有以下方法从共享应用程序播放视频
public async void Play(string url, string mimeType)
{
var videoPath = new NSUrl(url);
var player = new MPMoviePlayerController(videoPath);
player.AllowsAirPlay = true;
player.SetFullscreen(true, true);
player.ControlStyle = MPMovieControlStyle.Fullscreen;
player.PrepareToPlay();
do
{
await Task.Delay(100);
} while (!player.IsPreparedToPlay);
player.Play();
}
我遇到的问题是视频播放完毕后会移除最顶层的视图(Pops)。
我需要的是视频消失并将用户返回到他们离开的地方。
我想出了这个解决方法,但是我知道它远非正确,并且在退出全屏后会让玩家看到它(暂时)。
public async void Play(string url, string mimeType)
{
var videoPath = new NSUrl(url);
var player = new MPMoviePlayerController(videoPath);
var root = UIApplication.SharedApplication.KeyWindow.RootViewController.View;
root.AddSubview(player.View);
player.AllowsAirPlay = true;
player.SetFullscreen(true, true);
player.ControlStyle = MPMovieControlStyle.Fullscreen;
player.PrepareToPlay();
player.View.Frame = root.Bounds;
var fakeView = new UIView { Frame = root.Bounds, BackgroundColor = UIColor.White };
fakeView.AddSubview(player.View);
do
{
await Task.Delay(100);
} while (!player.IsPreparedToPlay);
player.Play();
}
将玩家添加到子视图两次感觉很脏。什么是正确的方法来解决这个问题?
答案 0 :(得分:0)
我刚刚将您的代码添加到我的XF应用程序中(根据需要添加视频播放器),当视频播放器关闭时我没有任何弹出窗口,因此可能会在您的应用中设置导致此问题的内容。