自定义字体不会在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社区)
对于来这里使用Windows 10和Visual Studio的人
xxx.ttf
放在Resources文件夹中xxx.ttf
> Properties> Build Action:BundleResourceinfo.plist
>打开方式> Xml(文本)编辑器<dict>
... ... ...
<key>UIAppFonts</key>
<array>
<string>xxx.ttf</string>
</array>
... ... ...
</dict>
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>
更新:必须更新Info.plist(包括字体类型,例如ttf),并且应将Font的属性设置为不复制到输出目录(不要复制)。它在这些变化之后起作用。