首页 > 解决方案 > 为什么我的自定义字体在 Xamarin.iOS 中不起作用?

问题描述

男孩,我被困住了。我想我已经在网上查看了所有指南,但无法让它发挥作用。以下是我已完成的步骤:

  1. 我已将此自定义字体目录添加到资源/字体下的 Xamarin.iOS 项目中。
  2. 我已将它们的构建操作全部设置为
    BundledResources。
  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 中的字体放在前面,但这会导致代码中引用的字体为 null 的异常。

我真的无法弄清楚我在这里缺少什么。字体似乎不适用。我使用 SushiHangover 的代码来确保我的字体已注册:

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 的名称弄错了,它之前确实修复了运行时错误。但它没有使字体适用。

标签: iosxamarinfontsxamarin.ios

解决方案


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

我刚刚关注了在 Xamarin.iOS 中使用自定义字体的博客,并使用 .ttf 和 .otf 进行了测试。一切正常。

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

在此处输入图像描述

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

在此处输入图像描述

<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);

推荐阅读