捕获屏幕iOS时,在YouTube上获取黑色视频



我正在使用此代码在iOS上捕获屏幕,但是在捕获具有YouTube视频的浏览器时,我会得到黑色视频

        var view = UIApplication.SharedApplication.KeyWindow.RootViewController.View;
        UIGraphics.BeginImageContext(view.Frame.Size);
        view.DrawViewHierarchy(view.Frame, true);
        var image = UIGraphics.GetImageFromCurrentImageContext();
        UIGraphics.EndImageContext();

我尝试了此代码将WebView作为要捕获的参数发送刷新的参数,并且WebVEIW一直以来都始终进行播放,并且从未重新加载:

       public async Task<byte[]> CaptureAsync(Xamarin.Forms.View fView)
    {
        CGRect rect = new CGRect(fView.X, fView.Y, fView.Height, fView.Width);
        var view = ConvertFormsToNative(fView, rect);
        UIGraphics.BeginImageContext(view.Frame.Size);
        view.DrawViewHierarchy(view.Frame, true);
        var image = UIGraphics.GetImageFromCurrentImageContext();
        UIGraphics.EndImageContext();
        using (var imageData = image.AsPNG())
        {
            var bytes = new byte[imageData.Length];
            System.Runtime.InteropServices.Marshal.Copy(imageData.Bytes, bytes, 0, Convert.ToInt32(imageData.Length));
            return bytes;
        }
    }
     private UIView ConvertFormsToNative(Xamarin.Forms.View view, CGRect size)
    {
        var renderer = RendererFactory.GetRenderer(view);
        renderer.NativeView.Frame = size;
        renderer.NativeView.AutoresizingMask = UIViewAutoresizing.All;
        renderer.NativeView.ContentMode = UIViewContentMode.ScaleToFill;
        renderer.Element.Layout(size.ToRectangle());
        var nativeView = renderer.NativeView;
        nativeView.SetNeedsLayout();
        return nativeView;
    }

这是因为您捕获了RootViewController.View而不是webview或其他东西。

只需确保视图(您要转换为屏幕截图(是视频视图(WebViewWKWebvViewSFSafariViewController.view ..(

最新更新