Xamarin.iOS中FontAwesome Pro三种字体无法同时激活的问题求助
解决Xamarin iOS中FontAwesome Pro多版本同时生效的问题
我之前也踩过这个坑!FontAwesome Pro的三个版本虽然共享同一个字体系列名,但每个字重其实对应着独立的字体标识符——关键是要找到每个版本对应的具体字体名称,而不是只用字体系列名Font Awesome 5 Pro来调用。下面是一步步的解决办法:
1. 确认字体文件的项目配置
首先确保三个字体文件(Light、Regular、Solid)都正确导入到Xamarin iOS项目中:
- 将字体文件拖到项目的Resources文件夹(或你指定的资源目录)
- 选中每个字体文件,在属性面板设置Build Action为
BundleResource - 打开
Info.plist,添加Fonts provided by application数组项,把三个字体的完整文件名(包括后缀)都加进去,比如:Font Awesome 5 Pro-Light.otfFont Awesome 5 Pro-Regular.otfFont Awesome 5 Pro-Solid.otf
注意:iOS对文件名大小写敏感,一定要和实际文件的名称完全一致!
2. 找到每个字体的具体调用名称
FontBook显示的字体系列名不代表实际可调用的字体名称,我们可以通过代码打印出设备上所有可用的字体,找到每个FontAwesome Pro版本对应的准确名称:
在AppDelegate.cs的FinishedLaunching方法里添加这段代码:
foreach (var familyName in UIFont.FamilyNames) { Console.WriteLine($"字体系列: {familyName}"); foreach (var fontName in UIFont.FontNamesForFamilyName(familyName)) { Console.WriteLine($" 字体名称: {fontName}"); } }
运行项目后,在输出窗口里找到Font Awesome 5 Pro系列下的三个具体字体名称,通常会是类似这样的格式:
FontAwesome5Pro-LightFontAwesome5Pro-RegularFontAwesome5Pro-Solid
3. 正确调用对应版本的字体
拿到准确的字体名称后,就可以直接用UIFont.FromName调用对应版本了:
// 使用Light版本 var faLightFont = UIFont.FromName("FontAwesome5Pro-Light", 24); // 使用Regular版本 var faRegularFont = UIFont.FromName("FontAwesome5Pro-Regular", 24); // 使用Solid版本 var faSolidFont = UIFont.FromName("FontAwesome5Pro-Solid", 24);
这样就能在项目中同时使用FontAwesome Pro的三个版本了,再也不会出现只能用一种的情况~
内容的提问来源于stack exchange,提问作者Martin M
相关产品推荐
相关产品推荐

