Mar*_*man 2 c# xamarin.ios ios xamarin xamarin.forms
我正在使用自定义字体,目前正在使用一种名为“ Yellowtail-Regular.tff”的字体。我Fonts在iOS文件夹中创建了一个名为的地图,并在其中添加了tff文件。之后,我进入Info.plist并创建了一个,Fonts provided by application然后在其中创建了一个名为的新字符串Fonts/Yellowtail-Regular.ttf。
现在,当我尝试像这样使用它时:
<Label FontFamily = "Yellowtail" Text = "Testing my label" />
Run Code Online (Sandbox Code Playgroud)
标准字体(Helvetica Neue)仍然保留。我也尝试过:
<Label FontFamily = "Yellowtail-Regular" Text = "Testing my label" />
Run Code Online (Sandbox Code Playgroud)
但是结果相同。
我错过了一步还是做错了什么?
有时字体书会显示带有空格的名称。
就我而言:字体名称是:SFProDisplay-Ultralight。但字体书显示名称为“SF Pro Display Ultralight”。由于此自定义字体在 iOS 中不起作用。
因此,您可以使用以下代码找到正确的字体名称并将其应用到 iOS 中。在 AppDelegate 启动方法中添加此代码。然后您可以在应用程序输出中找到可行字体名称的列表。
foreach (var family in UIFont.FamilyNames)
{
System.Diagnostics.Debug.WriteLine($"{family}");
foreach (var names in UIFont.FontNamesForFamilyName(family))
{
System.Diagnostics.Debug.WriteLine($"{names}");
}
}
Run Code Online (Sandbox Code Playgroud)
之后,您可以使用 xaml 来引用字体。
<OnPlatform x:Key="SFProDisplayUltraLight" x:TypeArguments="x:String">
<On Platform="iOS" Value="SFProDisplay-Ultralight" />
<On Platform="Android" Value="SF-Pro-Display-Ultralight.otf#SF Pro Display Ultralight" />
</OnPlatform>
Run Code Online (Sandbox Code Playgroud)
然后将其应用于控件。
<Lable Text="Welcome" FontFamily="{StaticResource SFProDisplayUltraLight}"/>
Run Code Online (Sandbox Code Playgroud)
如果您Yellowtail-Regular.ttf从http://www.1001freefonts.com/yellowtail.font使用,则该字体名称iOS将为Yellowtail。
每个平台都有不同的命名约定,因此使用Device.OnPlatform可能类似于:
public Label()
{
FontFamily = Device.OnPlatform("Yellowtail", "Yellowtail-Regular", "/Assets/Yellowtail-Regular.ttf#Yellowtail-Regular");
}
Run Code Online (Sandbox Code Playgroud)
要确认您的iOS字体系列名称,请macOS打开您的.ttfusing,Font Book然后将使用macOS/ 的名称iOS是应用程序标题栏中的名称。
| 归档时间: |
|
| 查看次数: |
1678 次 |
| 最近记录: |