【问题标题】:Cannot get FontAwesome 5 to work with Xamarin Forms, iOS and Android无法让 FontAwesome 5 与 Xamarin Forms、iOS 和 Android 一起使用
【发布时间】:2019-01-25 22:33:22
【问题描述】:

我尝试了所有我能找到的教程,并且最密切地关注了这个:

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

很抱歉,如果这些问题看起来很基本,但我在很长一段时间后无法显示图标。出现的只是一个?除了不起作用的示例之外,我似乎找不到任何地方可以解释如何为 FontAwesome 5 和 Xamarin 执行此操作。

【问题讨论】:

  • 不确定,但我想我在某个地方发现您应该将字体设置为粗体以使其正常工作。您可以尝试将此属性添加到您的标签FontAttributes="Bold"
  • 我的回答解决了你的问题吗?
  • 将此链接用于c#参考github.com/fzany/Font-Awesome-Cheat-Charp
  • 刚刚用这个把我的头发扯掉了。开箱即用的 git 项目在 iOS 中不起作用。您需要 FontAttibutes="Bold" 才能使其工作并引用 info.plist 中的字体文件

标签: xamarin xamarin.forms font-awesome


【解决方案1】:

FontAwesome 5 比 FontAwesome 4 稍微复杂一些,因为您有 3 组字体。我已经为 font awesome 5 pro 做到了这一点。

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

对于 iOS,您可以将 fontfamily 设置为 Font Awesome 5 Brands(如果您使用品牌集)或设置为 Font Awesome 5 Pro(如果您使用其他 3 个集合中的任何一个)。目前,您一次只能使用一组。我会给你另一个答案,这样你就可以在同一个应用程序中使用这 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 文件中。在 light、regular 或solid 之间只添加 一个 字符串。

<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 中,您使用 "&amp;#xf249;" 版本。在 C# 中,您使用 "\uf004" 版本。

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

没有

如何找到字体的名称?我将它设置为“Font Awesome 5 Free”,但这只是复制示例,我也无法让它工作。

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

我应该为 iOS=" " 指定什么,应该是文件名减去 .ttf(或 .otf)吗? Android= 怎么样?

见上文。

【讨论】:

【解决方案2】:

如果你想在 Xamarin.IOS 中使用一些 Awesome Font 文件,你必须知道你的 ttf 文件的 'Postscript Name' 是什么。只需看下图:

iOS通过'PostScript Name'加载任何字体,所以如果文件名和'PostScript Name'不同,我们应该小心使用它。

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

在 Xamarin.Android 中,操作系统不会通过“Postscript Name”加载字体文件,而是直接使用文件名。

所以我建议你应该将它重命名为“PostScript Name”,就像“FontAwesome5Pro-Light.ttf”一样。然后,您可以将“FontAwesome5Pro-Light”分配给 Label 或 Button 控件的“FontFamily”属性。

然后你就可以随心所欲地使用它了。否则,您会看到一个小框和一个问号

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-04-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-01
    • 1970-01-01
    相关资源
    最近更新 更多