Невозможно сделать снимок экрана WkWebView в Xamarin IOS - PullRequest
0 голосов
/ 26 сентября 2019

Я пытаюсь сделать снимок экрана в IOS, кроме WkWebview, все остальные компоненты представления, которые я могу записать с помощью приведенного ниже кода. WkWebview предоставляет пустую страницу в качестве захваченных данных.Если я использую UIWebview, работает тот же код. Есть ли что-то конкретное, чтобы сделать снимок экрана WkWebView.

Код для захвата экрана.

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

1 Ответ

0 голосов
/ 26 сентября 2019

Я исправил проблему, заменив 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...