iOS 11.1.2上的Xamarin.Forms:Webview加载了更大的字体

时间:2017-12-05 14:10:08

标签: ios webview xamarin.forms

我使用Xamarin.Forms来加载互联网的网页(客户的要求,请不要评判我),问题是在iOS中网页看起来更大了它是。

我在iOS上没有自定义渲染。

这是在iPhone 6 iOS 11.1.2上的safari上加载的网站

这里加载了webview

MainPage.xaml中

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Xamarin.Forms;
using Plugin.Connectivity;
using System.ComponentModel;

namespace Juppie
{
    public partial class MainPage : ContentPage, INotifyPropertyChanged
    {
        public event PropertyChangedEventHandler PropertyChanged;

        public MainPage()
        {
            InitializeComponent();

            Navegador.Navigating += Navegador_Navigating;
            Navegador.Navigated += (sender, e) => { Navegando = false; };
            HayInternet = true;
            BindingContext = this;
        }
        bool hayInternet;

        public bool HayInternet
        {
            get
            {
                return hayInternet;
            }

            set
            {
                hayInternet = value;

                PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("HayInternet"));

                EvaluarInternet();
            }
        }
        bool navegando;

        public bool Navegando
        {
            get
            {
                return navegando;
            }

            set
            {
                navegando = value;
                PropertyChanged?.Invoke(this, new PropertyChangedEventArgs("Navegando"));

            }
        }

        public async void EvaluarInternet(){
            if (!HayInternet)
            {
             await DisplayAlert("Aviso","Se requiere conexion a internet para emplear esta aplicacion", "OK");
            }
        }

        protected override void OnAppearing()
        {
            HayInternet = CrossConnectivity.IsSupported && CrossConnectivity.Current.IsConnected;

            CrossConnectivity.Current.ConnectivityChanged += (sender, args) =>
            {
                HayInternet = args.IsConnected;
            };

            base.OnAppearing();
        }

        protected override bool OnBackButtonPressed()
        {
            if (Navegador.CanGoBack)
            {
                Navegador.GoBack();
                return false;
            }

            return base.OnBackButtonPressed();
        }

        void Navegador_Navigating(object sender, WebNavigatingEventArgs e)
        {
            Navegando = true;
            if (e.Url.Contains("/banner"))
            {
                e.Cancel = true;

                var uri = new Uri(e.Url.Replace("/banner", ""));
                Device.OpenUri(uri);
            }
        }
    }
}

MainPage.xaml.cs中

WARNING

我尝试使用自定义渲染并设置scalePageToFit = false,但没有成功。 如果有人知道如何解决这个问题,请告诉我。

4 个答案:

答案 0 :(得分:3)

Xaml: - VerticalOptions="FillAndExpand"似乎填充了WebView的HeightRequest和WidthRequest属性规范要求,以便在StackLayout中呈现 - 无论如何它在网格中呈现:

<Grid>
    <WebView x:Name="webView"
             VerticalOptions="FillAndExpand"
             Source="https://www.xamarin.com/"/>
</Grid>

Renderer,ScalesPageToFit默认为false(至少在iPhone SE 11.2的模拟器中)

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

            if (NativeView != null && e.NewElement != null)
            {
                var webView = ((UIWebView)NativeView);
                webView.ScalesPageToFit = true;
            }
        }
    }
}

以下屏幕截图来自iPhone SE的模拟器。

ScalesPageToFit = true:

enter image description here

ScalesPageToFit = false: enter image description here

答案 1 :(得分:2)

在我的iPhone 6上测试,该应用程序显示与Safari相同的字体大小。 我还测试了应用程序中字体大小较大的系统字体,它不受应用程序字体大小的影响。 但我确实注意到当活动指示器运行时,我的字体大小变小了,并且在活动指示器消失后它变为正常。

字体大小问题可能是由于Nuget软件包或活动指示器等其他内容的副作用造成的?

您可以尝试使用新的空表单并仅加载Webview来比较差异。

顺便说一句,你的应用程序外观与iPhone非常相似,并启用了显示缩放功能。

开启显示缩放前:

enter image description here

打开显示缩放后:

enter image description here

答案 2 :(得分:1)

是否可能会通过iPhone的可访问性设置覆盖大小调整?

请参阅设置 - 应用 - &gt;一般 - &gt;可访问性 - &gt;更大的文字

(从德语自由翻译,实际菜单条目可能被命名为不同)

答案 3 :(得分:0)

我遇到了同样的问题。

在Xamarin.Forms App解析基于Launch屏幕。如果您正在使用Assets(LaunchImage)启动屏幕。然后根据LaunchImage设置您的应用分辨率。

最佳解决方案是:使用storyboard(LaunchScreen.storyboard)或XIB for Launch屏幕。这可以改善您的App UI。喜欢字体大小和应用分辨率