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.
J'ai d'abord ajouté les fichiers .ttf géniaux de police au dossier Android Assets et au dossier iOS Resources:
Ensuite, j'ai mis à jour le fichier Info.plist pour iOS afin d'inclure les fichiers .ttf de Font Awesome:
Ensuite, j'ai configuré l'utilisation des icônes Font Awesome dans App.xaml:
Enfin, j'ai ajouté les icônes nécessaires à leurs onglets:
3 Réponses :
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>
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
?
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.
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
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>
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'