C# 无法在Xamarin IOS中捕获WkWebView的屏幕
我正在尝试在IOS中捕获屏幕,除了WkWebview,我可以通过下面的代码捕获所有其他视图组件。WkWebview提供一个空白页面作为捕获的数据。如果我使用的是UIWebview,那么使用相同的代码是否有特定的操作来拍摄屏幕截图WkWebView 屏幕截图的代码C# 无法在Xamarin IOS中捕获WkWebView的屏幕,c#,ios,xamarin,webview,wkwebview,C#,Ios,Xamarin,Webview,Wkwebview,我正在尝试在IOS中捕获屏幕,除了WkWebview,我可以通过下面的代码捕获所有其他视图组件。WkWebview提供一个空白页面作为捕获的数据。如果我使用的是UIWebview,那么使用相同的代码是否有特定的操作来拍摄屏幕截图WkWebView 屏幕截图的代码 public static UIImage SnapshotView(this UIView view) { UIGraphics.BeginImageContextWithOptions(view.Bounds.Size, fa
public static UIImage SnapshotView(this UIView view)
{
UIGraphics.BeginImageContextWithOptions(view.Bounds.Size, false, UIScreen.MainScreen.Scale);
view.DrawViewHierarchy(view.Bounds, true);
var image = UIGraphics.GetImageFromCurrentImageContext();
UIGraphics.EndImageContext();
return image;
}
WkWebView配置:
WKWebView _wkWebView = new WKWebView(ReaderView.Frame, new WKWebViewConfiguration());
_wkWebView.LoadFileUrl(tempUrl, tempUrl);
_wkWebView.ContentMode = UIViewContentMode.ScaleToFill;
_wkWebView.BackgroundColor = UIColor.Clear;
_wkWebView.Opaque = false;
_wkWebView.ScrollView.BackgroundColor = UIColor.Clear;
//_wkWebView.DrawViewHierarchy(_wkWebView.Bounds, true);
ReaderView.AddSubview(_wkWebView);
var imag = _wkWebView.SnapshotView();
我通过将WKWebView替换为PdfView修复了此问题。我正在使用此视图加载PDF 最新代码如下
pdfView = new PdfView();
pdfView.TranslatesAutoresizingMaskIntoConstraints = false;
ReaderView.AddSubview(pdfView);
pdfView.LeadingAnchor.ConstraintEqualTo(View.SafeAreaLayoutGuide.LeadingAnchor).Active = true;
pdfView.TrailingAnchor.ConstraintEqualTo(View.SafeAreaLayoutGuide.TrailingAnchor).Active = true;
pdfView.TopAnchor.ConstraintEqualTo(View.SafeAreaLayoutGuide.TopAnchor).Active = true;
pdfView.BottomAnchor.ConstraintEqualTo(View.SafeAreaLayoutGuide.BottomAnchor).Active = true;
// var path = Bundle.main.url(forResource: "test", withExtension: "pdf") else { return }
PdfDocument document;
// PdfDocument
using (urlString = new NSString(FilePath))
using (var tempUrl = NSUrl.CreateFileUrl(new string[] { urlString }))
document = new PdfDocument(tempUrl);
//if var document = PdfDocument(url: path) {
pdfView.Document = document;
如果未注释掉
DrawViewHierarchy
,它应该可以工作(假设html页面已完成)您是否尝试使用PerformSelect-Delayer调用方法SnapshotView(),我也尝试过使用“DrawViewHierarchy”,然后仅注释掉它。@Prasanth,请为实现提供一个示例代码或链接。请按此方式检查一次,NSTimer timer=NSTimer.CreateRepeatingsScheduledTimer(TimeSpan.FromSeconds(3),委托{var imag=_wkWebView.SnapshotView();});