完成后,MPMoviePlayerController将删除最顶层的视图

时间:2014-07-30 16:49:36

标签: ios xamarin.ios mpmovieplayercontroller

我有以下方法从共享应用程序播放视频

    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();
    }

将玩家添加到子视图两次感觉很脏。什么是正确的方法来解决这个问题?

1 个答案:

答案 0 :(得分:0)

我刚刚将您的代码添加到我的XF应用程序中(根据需要添加视频播放器),当视频播放器关闭时我没有任何弹出窗口,因此可能会在您的应用中设置导致此问题的内容。