无法使FontAwesome 5与Xamarin Forms,iOS和Android一起使用

时间:2018-08-19 16:48:08

标签: xamarin xamarin.forms font-awesome

我尝试按照我可以找到的所有教程进行学习,并且最接近地遵循了这一教程:

https://github.com/coolc0ders/FontAwesome5XamarinForms

但是出现的只是问号而不是图标,即使上面的示例在我运行时也对我不起作用。

我的XML如下:

<Label Text="&#xf249;"  FontSize="20" Grid.Column="0" >
   <Label.FontFamily>
      <OnPlatform 
         x:TypeArguments="x:String"
            Android="Font Awesome 5 Free-Regular-400.otf#Font Awesome 5 Free Regular" 
            iOS="Font Awesome 5 Free" />
   </Label.FontFamily>
</Label>

我现在有一些问题。

  • 我是否需要将FontFamily设置为“ FontAwesome”
  • 对于Android和iOS,我应该使用.ttf文件还是.otf文件
  • 对于iOS,我需要编辑info.plist,如果要怎么做?
  • 我应该将图标指定为"&#xf249;"还是"\uf004"
  • 对于Android和iOS d0,我需要将字体文件设置为“复制到输出目录”
  • 如何找出字体名称?我将其设置为“ Font Awesome 5 Free”,但这只是复制示例,我也无法使其正常工作。
  • 我应该为iOS =“”指定什么,文件名应减去.ttf(或.otf)吗? Android =呢?

很抱歉,如果这些问题看似基本,但经过很长时间我还是无法显示图标。出现的只是一个?除了不起作用的示例外,我似乎找不到任何地方可以解释如何针对FontAwesome 5和Xamarin做到这一点。

2 个答案:

答案 0 :(得分:3)

FontAwesome 5比FontAwesome 4复杂一点,因为您有3种字体。我已经为字体超棒的5专业版做到了这一点。

  

我是否需要将FontFamily设置为“ FontAwesome”

对于 iOS ,如果使用品牌集,则可以将fontfamily设置为Font Awesome 5 Brands,如果使用任何一种,则可以设置为Font Awesome 5 Pro。其他3套。目前,您一次只能使用一组。我会再给你一个答案,这样您就可以在同一应用程序中使用这三套软件了。

对于 Android ,这是我的开关:

switch (awesomeStyle)
            {
                case AwesomeStyle.Brands:
                    fontFile = "fa-brands-400.ttf#Font Awesome 5 Brands";
                    break;
                case AwesomeStyle.Light:
                    fontFile = "fa-light-300.ttf#Font Awesome 5 Pro";
                    break;
                case AwesomeStyle.Regular:
                    fontFile = "fa-regular-400.ttf#Font Awesome 5 Pro";
                    break;
                case AwesomeStyle.Solid:
                    fontFile = "fa-solid-900.ttf#Font Awesome 5 Pro";
                    break;
                default:
                    throw new ArgumentOutOfRangeException();
            }
  

对于Android和iOS,我应该使用.ttf文件还是.otf文件

我使用.ttf文件。

  

对于iOS,我需要编辑info.plist,如果是的话,该怎么做?

是的。将以下密钥添加到您的info.plist文件中。在浅色,普通或纯色之间仅添加一个字符串。

<key>UIAppFonts</key>
<array>
    <string>fa-brands-400.ttf</string>
    <string>fa-light-300.ttf</string>
    <string>fa-regular-400.ttf</string>
    <string>fa-solid-900.ttf</string>
</array>
  

我应该将图标指定为“”还是“ \ uf004”

在xaml中,您使用"&#xf249;"版本。在C#中,您使用"\uf004"版本。

  

对于Android和iOS d0,我需要将字体文件设置为“复制到输出目录”

没有

  

如何找出字体名称?我将其设置为“ Font Awesome 5 Free”,但这只是复制示例,我也无法使其正常工作。

我给你上面的名字。否则,您应该使用字体编辑器查找名称。在Windows中,您可以在字体文件的属性中找到名称,但是信息太多,应该忽略标题的最后一个单词(在“详细信息”选项卡中)。

  

我应该为iOS =“”指定什么,该文件名应减去.ttf(或.otf)吗? Android =呢?

见上文。

答案 1 :(得分:0)

如果要在Xamarin.IOS中使用某些Awesome字体文件,则必须知道ttf文件的“ Postscript名称” 。请看下面的图片: enter image description here

iOS会通过“ PostScript名称”加载所有字体,因此,如果文件名和“ PostScript名称”不同,则应谨慎使用。

您应该下载字体查看器工具并检查此属性。并且必须将此名称分配给Xamarin.Forms或Xamarin.IOS控件的'FontFamily'或'Font'属性。

在Xamarin.Android中,操作系统不会按“ Postscript Name”(脚本名称)加载字体文件,而是直接使用文件名。

因此,我建议您将其重命名为“ PostScript名称”,就像“ FontAwesome5Pro-Light.ttf”一样。然后,您可以将'FontAwesome5Pro-Light'分配给Label或Button控件的'FontFamily'属性。

然后,您可以根据需要使用它。否则,您会看到一个小方框和一个问号