为什么我的自定义字体在 Xamarin.iOS 中不起作用?

问题描述

男孩,我被困住了。我想我已经在线查看了每个指南,但无法使其正常工作。以下是我已完成的步骤:

  1. 我已将此自定义字体目录添加到我的 Xamarin.iOS 项目中 在资源/字体下。
  2. 我已将他们的构建操作全部设置为
    捆绑资源。
  3. 我已为他们设置始终复制到构建中
    目录。
  4. 我已将他们的名字添加到 Info.Plist 中,如下所示:
<key>UIAppFonts</key>
    <array>
      <string>BentonSans-Regular.otf</string>
      <string>BentonSans-Black.otf</string>
      <string>BentonSans-Bold.otf</string>
      <string>BentonSans-Book.otf</string>
      <string>BentonSans-CompMediumRegular.otf</string>
      <string>BentonSans-Medium.otf</string>
    </array>
  1. 我尝试像这样设置字体:

    button.Font = UIFont.FromName("BentonSansComp-Medium",16);

请注意这样做,我的应用程序运行,但字体似乎没有任何效果。我曾尝试将 Fonts/ 放在 info.plist 中的字体前面,但这会导致代码中引用字体为空的异常。

我真的无法弄清楚我在这里遗漏了什么。字体似乎不适用。我使用 SushiHangover 的 code 来确保我的字体已注册

2021-05-11 16:03:01.168473+0100 MyProject[54240:1851117]  * BentonSans Black
2021-05-11 16:03:01.169049+0100 MyProject[54240:1851117]  *-- BentonSans-Black
2021-05-11 16:03:01.169423+0100 MyProject[54240:1851117]  * BentonSans Bold
2021-05-11 16:03:01.169862+0100 MyProject[54240:1851117]  *-- BentonSans-Bold
2021-05-11 16:03:01.170201+0100 MyProject[54240:1851117]  * BentonSans Book
2021-05-11 16:03:01.170743+0100 MyProject[54240:1851117]  *-- BentonSans-Book
2021-05-11 16:03:01.171092+0100 MyProject[54240:1851117]  * BentonSans Comp Medium
2021-05-11 16:03:01.171826+0100 MyProject[54240:1851117]  *-- BentonSansComp-Medium
2021-05-11 16:03:01.172315+0100 MyProject[54240:1851117]  * BentonSans Medium
2021-05-11 16:03:01.173718+0100 MyProject[54240:1851117]  *-- BentonSans-Medium
2021-05-11 16:03:01.174237+0100 MyProject[54240:1851117]  * BentonSans Regular
2021-05-11 16:03:01.175211+0100 MyProject[54240:1851117]  *-- BentonSans-Regular

这表明我弄错了 BentonSansComp-Medium 的名称,它确实修复了之前的运行时错误。但它并没有使字体适用。

解决方法

您使用字符串“BentonSansComp-Medium”作为方法“UIFont.FromName”的参数,但它不存在于您的 plist 中。

我刚刚关注了博客 Using custom Fonts in Xamarin.iOS,并使用 .ttf 和 .otf 进行了测试。一切正常。

解决方案资源管理器中的文件夹:

enter image description here

这是我的 info.plist。 (构建操作:BundleResource,复制到输出目录:始终复制)

enter image description here

<key>UIAppFonts</key>
<array>
  <string>Fonts/MyFonts/Winter.otf</string>
  <string>Fonts/MyFonts/Goodest.ttf</string>
</array>

测试代码:

var lab1 = new UILabel(new RectangleF(0,100,300,40));
lab1.Text = "This is some sample text";
lab1.Font = UIFont.FromName("Winter",20f);
this.Add(lab1);