自定义字体不会在Xamarin iOS中加载

问题描述 投票:0回答:2

自定义字体不会在Xamarin iOS中加载。如2013年的Xamarin文档(https://blog.xamarin.com/custom-fonts-in-ios/)所述,我做了以下工作:

1)将字体导入资源 2)将Build Action设置为“BundleResource”(Xamarin文档中的错误) 3)复制到输出目录:“Always Copy” 4)在Info.plist中将字体名称添加到数组“由应用程序提供的字体”(使故事板中的字体可用,但不在运行时)

在App Delegate中的FinishedLaunching()中,我遍历所有已安装的字体:

foreach (var family in UIFont.FamilyNames)
{
    System.Diagnostics.Debug.WriteLine($"{family}");

    foreach (var names in UIFont.FontNamesForFamilyName(family))
    {
        System.Diagnostics.Debug.WriteLine($"{names}");
    }
}
var fontName = UIFont.FromName("Karbon", 20.0f); // fontName is null

没有自定义字体显示,这里有什么问题?


Visual Studio Community 2017 for Mac(预览版)7.1预览版(7.1 build 1178)运行时:Mono 5.2.0.179(2017-04/4498dc4)(64位)

Xamarin.iOS版本:10.12.0.5(Visual Studio社区)

xamarin xamarin.ios custom-font
2个回答
2
投票

对于来这里使用Windows 10和Visual Studio的人

  • xxx.ttf放在Resources文件夹中
  • 右键单击xxx.ttf> Properties> Build Action:BundleResource
  • 不要做=>复制到输出目录:始终复制
  • Xamarin.iOS>右键单击info.plist>打开方式> Xml(文本)编辑器
  • 添加以下:
<dict>

    ... ... ...

    <key>UIAppFonts</key>
    <array>
        <string>xxx.ttf</string>
    </array>

    ... ... ...

</dict>
  • 在xaml中使用字体名称而不是xxx.ttf文件名(双击xxx.ttf以查看字体名称)
<Label.FontFamily>
    <OnPlatform x:TypeArguments="x:String">
        <On Platform="iOS" Value="Typeface_name" />
        <On Platform="Android" Value="filename_name.ttf#Typeface_name" />
        <On Platform="UWP" Value="Assets/Fonts/filename_name.ttf#Typeface_name" />
    </OnPlatform>
</Label.FontFamily>

0
投票

更新:必须更新Info.plist(包括字体类型,例如ttf),并且应将Font的属性设置为不复制到输出目录(不要复制)。它在这些变化之后起作用。

© www.soinside.com 2019 - 2024. All rights reserved.