2017-12-05 2 views
5

Ich benutze Xamarin.Forms, um eine Internetseite zu laden (Anforderungen des Kunden, bitte verurteile mich nicht), das Problem ist, dass in iOS die Webseite scheint größer zu sein als sie ist.Xamarin.Forms auf iOS 11.1.2: Webview lädt eine größere Schrift

Ich habe keine benutzerdefinierten Render auf iOS.

Hier ist die Website auf Safari auf einem auf der Webansicht

MainPage.xaml

<?xml version="1.0" encoding="utf-8" ?> 
<ContentPage xmlns="http://xamarin.com/schemas/2014/forms" 
      xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" 
      xmlns:local="clr-namespace:Juppie" 
      x:Class="Juppie.MainPage"> 
      <Grid> 

    <WebView x:Name="Navegador" Source="http://empleosapp.caonainteractive.com/" 
    WidthRequest="1000" HeightRequest="1000" IsVisible="{Binding Path=HayInternet}" ></WebView> 
    <ActivityIndicator IsRunning="{Binding Path=Navegando}" IsVisible="{Binding Path=Navegando}" 
     VerticalOptions="CenterAndExpand" 
           HorizontalOptions="CenterAndExpand" 
           RelativeLayout.XConstraint="{ConstraintExpression Type=RelativeToParent, 
             Property=Height, 
             Factor=0.33}" 
           RelativeLayout.YConstraint="{ConstraintExpression Type=RelativeToParent, 
             Property=Height, 
             Factor=0.33}"/> 
    </Grid> 


</ContentPage> 

Mainpage Und hier

11.1.2 iOS iPhone 6 geladen geladen. xaml.cs

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

Ich habe versucht mit einem benutzerdefinierten Render und setzen Sie die scalePageToFit = false, ohne Erfolg. Wenn jemand weiß, wie ich das beheben kann, lass es mich wissen.

+1

Wenn ich in Safari bewegen sie den Zoom hält. –

Antwort

2

Getestet auf meinem iPhone 6 und die App zeigte die gleiche Schriftgröße wie Safari. Ich habe auch mit größerer Systemschrift in der Schriftgröße in der App getestet und es war nicht mit der App Schriftgröße betroffen. Aber ich habe bemerkt, dass, als der Aktivitätsindikator lief, meine Schriftgröße kleiner wurde und nach dem Verschwinden des Aktivitätsindikators normal wurde.

Vielleicht wurde die Schriftgröße Problem durch die Nebenwirkung von zusätzlichen Sachen wie ein Nuget-Pakete oder Activity Indikator?

Sie könnten versuchen, ein neues leeres Formular zu verwenden und nur das Webview zu laden, um die Unterschiede zu vergleichen.

Übrigens, Ihre App Aussehen ist sehr ähnlich mit iPhone mit eingeschaltetem Display Zoom-Funktion.

Vor Einschalten der Anzeige Zoom:

enter image description here

Nach dem Einschalten Anzeige Zoom gedreht:

enter image description here

+0

Auf der PCL Ich verwende diese Pakete: Microsoft.Azure.Mobile Microsoft.Azure.Mobile.Analytics Microsoft.Azure.Mobile.Crashes Microsoft.Azure.Mobile.Distribute Microsoft.Azure.Mobile.Push Xam.Plugin.Connectivity Xamarin.Forms –

3

XAML: - VerticalOptions="FillAndExpand" scheint die HeightRequest und WidthRequest Eigenschaft Spezifikationsanforderungen für die WebView zu füllen in einem StackLayout zu machen - in einem Raster, es trotzdem zu machen scheint:

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

Renderer, ScalesPageToFit standardmäßig falsch ist (zumindest im Simulator mit 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; 
      } 
     } 
    } 
} 

Die folgenden Screenshots stammen vom Simulator mit dem iPhone SE.

ScalesPageToFit = true:

enter image description here

ScalesPageToFit = false: enter image description here

+1

Es ist etwas seltsam mit http://empleosapp.caonainteractive.com/, aus irgendeinem Grund kann ich nicht das gleiche Verhalten von https://xamarin.com bekommen. Ich überprüfe es und lasse es Sie wissen. –

+1

@ DiomedesDomínguez, wenn Sie auf dem Emulator getestet haben, haben Sie auch diese Schriftart Problem? – Jason

+1

Ja, ich habe das gleiche Verhalten sowohl im Simulator als auch im physischen Smartphone. –

1

Ist es möglich, dass die Schlichte durch die Zugänglichkeits-Einstellungen aus dem iPhone überschrieben?

Siehe Einstellungen-App -> Allgemein -> Barrierrefreiheit -> Bigger Text

(frei übersetzt aus Deutsch, aktuelle Menüeinträge können unterschiedlich benannt werden)

1

ich das gleiche Problem konfrontiert.

In Xamarin.Forms App-Auflösung basiert auf dem Startbildschirm. Wenn Sie Assets (LaunchImage) für den Startbildschirm verwenden. Dann wird Ihre App-Auflösung gemäß LaunchImage festgelegt.

Die beste Lösung ist: Verwenden Sie Storyboard (LaunchScreen.storyboard) oder XIB für den Startbildschirm. Dies verbessert die App-Benutzeroberfläche. wie Schriftgröße und App-Auflösung

+0

Dies hat nichts mit dem Laden einer Website mit dem WebView zu sein. –

Verwandte Themen