0
votes

Pourquoi Font Awesome ne s'affiche-t-il pas pour les applications iOS à l'aide de Xamarin Forms?

J'essaie d'ajouter des icônes géniales de polices à mes onglets de page à onglets. J'ai suivi ce que je pense être les étapes correctes pour pouvoir configurer des icônes impressionnantes de polices d'affichage pour les applications Xamarin.forms, mais pour une raison quelconque, les icônes s'affichent pour l'application Android mais pas pour l'application iOS.

entrez la description de l'image icientrez la description de l'image ici

J'ai d'abord ajouté les fichiers .ttf géniaux de police au dossier Android Assets et au dossier iOS Resources:

Android iOS

Ensuite, j'ai mis à jour le fichier Info.plist pour iOS afin d'inclure les fichiers .ttf de Font Awesome:

entrez la description de l'image ici

Ensuite, j'ai configuré l'utilisation des icônes Font Awesome dans App.xaml:

entrez la description de l'image ici

Enfin, j'ai ajouté les icônes nécessaires à leurs onglets:

entrez la description de l'image ici


4 commentaires

iOS n'utilise PAS le nom du système de fichiers pour la famille de polices, il utilise le nom de famille postscript (ceux-ci sont encodés dans le fichier), ces noms sont disponibles via UIFont.FontNamesForFamilyName , regardez le code au bas de ma réponse ici ( stackoverflow .com / a / 48191854/4984832 ) et vous pouvez temp. ajoutez-le à votre projet Xamarin.iOS et obtenez vos noms à partir de la sortie de la console / du débogage. OU utilisez l'application système macOS: "Font Book", voir ma réponse ici: stackoverflow.com/questions/45768488/...


Lisez ce guide: devblogs.microsoft.com/xamarin/embedded-fonts-xamarin-forms . Vous n'avez pas besoin d'ajouter les fichiers de polices aux projets de plate-forme. Supprimez ensuite les données de l'application et réessayez.


veuillez NE PAS publier de code ou d'erreurs sous forme d'images


@ Saftpresse99 J'ai essayé de suivre ces étapes exactes auparavant, mais cela provoque une erreur dans le fichier MainActivity cs dans le projet Android: System.TypeLoadException: 'Impossible de résoudre le type avec le jeton'


3 Réponses :


0
votes

Remplacez vos valeurs iOS dans App.xaml.

foreach (var family in UIFont.FamilyNames)
            {
                System.Diagnostics.Debug.WriteLine($"{family}");
                foreach (var names in UIFont.FontNamesForFamilyName(family))
                {
                    System.Diagnostics.Debug.WriteLine($"{names}");
                }
            }

Pour obtenir le nom de police correct à utiliser dans iOS, utilisez le code ci-dessous dans AppDelegate dans FinishedLaunching .

<OnPlatform x:TypeArguments="x:String" 
                x:Key="FontAwesomeBrands">
                <On Platform="iOS"
                Value="FontAwesome5Brands-Regular" />
            </OnPlatform>

            <OnPlatform x:TypeArguments="x:String" 
                x:Key="FontAwesomeSolid">
                <On Platform="iOS" 
                Value="FontAwesome5Free-Solid" />
            </OnPlatform>

            <OnPlatform x:TypeArguments="x:String" 
                x:Key="FontAwesomeRegular">
                <On Platform="iOS" 
                Value="FontAwesome5Free-Regular" />
            </OnPlatform>


2 commentaires

J'ai essayé cela et je ne vois toujours pas d'icônes impressionnantes de polices affichées. De plus, en implémentant cette boucle, je ne suis pas en mesure de sortir les noms. Je débogue / exécute une application iOS via macincloud à partir de Visual Studio 2019


@ aqwright31 pourriez-vous s'il vous plaît vérifier l'action de création de votre fichier de polices? Est-ce BundleResource ?



1
votes

Sur iOS, veuillez utiliser le nom «réel» de la police au lieu du nom de fichier.

Vous pouvez vérifier cela par un clic droit sur le font file -> Properties -> Details -> Title dans les fenêtres. Par exemple, je teste un fichier de police personnalisé dont le nom de fichier est Font Awesome 5 Free-Solid-900.otf . Cela ne fonctionne pas si la valeur est définie sur le nom du fichier:

<OnPlatform x:TypeArguments="x:String" x:Key="FontAwesomeSolid">
    <On Platform="iOS" Value="FontAwesome5Free-Solid" />
</OnPlatform>

Essayez d'obtenir le tilte du fichier de police personnalisé et supprimez l'espace.

entrez la description de l'image ici

Spécifiez la valeur comme ci-dessous:

<OnPlatform x:TypeArguments="x:String" x:Key="FontAwesomeSolid">
    ...
    <On Platform="iOS" Value="Font Awesome 5 Free-Solid-900" />
</OnPlatform>

Référez-vous: Font Awesome ne fonctionne pas sous iOS


0 commentaires

0
votes

La définition de ces valeurs fonctionne à la fois pour Android et iOS dans App.xaml.

        <OnPlatform x:Key="FontAwesomeBrands"
                    x:TypeArguments="x:String">
            <On Platform="iOS"
                Value="FontAwesome5Brands-Regular" />
            <On Platform="Android"
                Value="FontAwesome5BrandsRegular400.otf#" />
        </OnPlatform>

        <OnPlatform x:Key="FontAwesomeSolid"
                    x:TypeArguments="x:String">
            <On Platform="iOS"
                Value="FontAwesome5Free-Solid" />
            <On Platform="Android"
                Value="FontAwesome5FreeSolid900.otf#" />
        </OnPlatform>

        <OnPlatform x:Key="FontAwesomeRegular"
                    x:TypeArguments="x:String">
            <On Platform="iOS"
                Value="FontAwesome5Free-Regular" />
            <On Platform="Android"
                Value="FontAwesome5FreeRegular400.otf#" />
        </OnPlatform>


0 commentaires