我正在使用此代码在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
或其他东西。
只需确保视图(您要转换为屏幕截图(是视频视图(WebView
或WKWebvView
或SFSafariViewController.view
..(