您如何在Xamarin.Forms.iOS中为Webview在页面上显示原始html元素实现自定义渲染器?

问题描述

我在Xamarin.Forms中使用WebView来显示html。它不会显示整个html页面,而只会显示通常在html页面的“正文”部分(即<h1>Hello</h1>)中的内容

但是,当网页视图显示页面上时,显示的html太小。另外,存在一个问题,即即使Webview应该覆盖整个页面,它也不能填充整个页面。 *这两个问题在Android中都不会发生。

以下是iOS中Webview显示html方式的一些屏幕截图:

simple html paragraph text

larger html element which does not extend to fill the entire page

这是我在xaml文件中的代码

    <WebView x:Name="webView" HeightRequest="1000" WidthRequest="1000">
        <WebView.source>
            <HtmlWebViewSource x:Name="announcementHtml"/>
        </WebView.source>
    </WebView>

在后面的代码中,一个名为“ announcement”的参数传递给页面的构造函数,我使用以下代码访问原始html: announcementHtml.Html = announcement.Announcement;

您只需在新页面上创建一个Web视图并在html元素(例如

等)中进行硬编码,就可以在自己的项目中复制此代码

我知道使用自定义渲染器是解决这些问题(或至少是html大小问题)的方法,但我不知道如何实现自定义渲染器。

任何帮助将不胜感激!

解决方法

最简单的Webview自定义渲染器,您可以在此处自定义Webview:

[assembly: ExportRenderer(typeof(WebView),typeof(MyWebViewRenderer))]
namespace App379.iOS
{
    public class MyWebViewRenderer : WkWebViewRenderer
    {
        protected override void OnElementChanged(VisualElementChangedEventArgs e)
        {
            base.OnElementChanged(e);

            if (e.NewElement != null)
            {

                this.ContentMode = UIViewContentMode.ScaleToFill;

            }
        }
    }
}

引用:Customizing a WebView