ios - 为什么我的自定义字体在 Xamarin.iOS 中不起作用?
问题描述
男孩,我被困住了。我想我已经在网上查看了所有指南,但无法让它发挥作用。以下是我已完成的步骤:
- 我已将此自定义字体目录添加到资源/字体下的 Xamarin.iOS 项目中。
- 我已将它们的构建操作全部设置为
BundledResources。 - 我已经为他们设置了始终复制到构建
目录。 - 我已经将他们的名字添加到 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>
我尝试像这样设置字体:
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 的名称弄错了,它之前确实修复了运行时错误。但它没有使字体适用。
解决方案
您使用字符串“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);
推荐阅读
- r - 导入和转换许多 csv 文件
- go - 每个 HTTP 请求都应该有一个新的 datastore.Client 吗?
- valgrind - FreeBSD 上 valgrind 的限制
- swift - 硬编码 NSUserActivityTypes 以恢复不同的数据模型
- unity3d - 为什么我不能缩放 Unity2D Orthographic 游戏?
- flutter - 不同设备上的列表放置颤动
- swiftui - SwuftUI 手势位置检测超出视图边框的点击
- javascript - 在页面加载时将多个选项标记为选中
- python - “if”循环与字符串长度测试不匹配
- bash - 用 Windows 编写的 bash 脚本无法正常运行,但如果用 linux 编写则可以