我试图让我的应用程序中的字体很棒。
我已经制作了自定义标签:
public FALabel()
{
FontFamily = Device.OnPlatform(null, "FontAwesome", "/Assets/fontawesome-webfont.ttf#FontAwesome");
}
我已将字体添加到2个项目中。
在Android上,它按预期工作 - 在IOS上没有,请参见下图。
这应该是6个不同的项目 - 它们都不是问号。
我将字体添加到info.plist
并将构建操作设置为始终复制。
我通过以下代码段验证了IOS上安装的字体:
private void LogFonts()
{
foreach (NSString family in UIFont.FamilyNames)
{
foreach (NSString font in UIFont.FontNamesForFamilyName(family))
{
Console.WriteLine(@"{0}", font);
}
}
}
我的字体很棒的unicodes是从字符串中提取的:
...
public static string FAGlass = "\uf000";
public static string FAMusic = "\uf001";
public static string FASearch = "\uf002";
...
如前所述,它在Android上按预期工作 - 我缺少什么?
Info.plist的相关部分
<key>UIAppFonts</key>
<array>
<string>FontAwesome.ttf</string>
</array>
答案 0 :(得分:2)
您的设备顺序错误:它是iOS,Android,然后是Windows:
public static Void OnPlatform (Action iOS, Action Android, Action WinPhone, Action Default)
参考:https://developer.xamarin.com/api/member/Xamarin.Forms.Device.OnPlatform/
答案 1 :(得分:0)
设置FontFamily时传递给Device.OnPlatform调用的第一个参数是要在iOS平台上使用的值。 在您的情况下,您已将其设置为null。
我这样设置我的:
FontFamily = Device.OnPlatform("FontAwesome", "FontAwesome", @"/Assets/Fonts/fontawesome - webfont.ttf#FontAwesome");
//For Android, a custom renderer is required in any case, which can specify the correct font without utilizing the FontFamily property, but I prefer to specify it there as well, for clarity or if you decide to support multiple fonts
它运作得很好。