繁体   English   中英

为什么不使用自定义字体? Xamarin.Forms.iOS

[英]Why is the custom font not being used? Xamarin.Forms.iOS

我现在正在使用自定义字体,目前使用的是一种名为:“Yellowtail-Regular.tff”的字体。 我在 iOS 文件夹中创建了一个名为Fonts的地图,并在其中添加了 tff 文件。 之后,我转到我的 Info.plist 并创建了一个Fonts provided by applicationFonts provided by application并在其中创建了一个名为Fonts/Yellowtail-Regular.ttf的新字符串。

当我现在尝试像这样使用它时:

<Label FontFamily = "Yellowtail" Text = "Testing my label" />

标准字体 (Helvetica Neue) 仍然存在。 我也试过:

<Label FontFamily = "Yellowtail-Regular" Text = "Testing my label" />

但结果是一样的。

我错过了一步还是我做错了什么?

如果您使用来自http://www.1001freefonts.com/yellowtail.font 的Yellowtail-Regular.ttf ,那么iOS下的字体名称将只是Yellowtail

每个平台都有不同的命名约定,因此使用Device.OnPlatform可能类似于:

public Label()
{
  FontFamily = Device.OnPlatform("Yellowtail", "Yellowtail-Regular", "/Assets/Yellowtail-Regular.ttf#Yellowtail-Regular");      
}

要确认您的 iOS 字体系列名称,请在macOS使用Font Book打开您的.ttfmacOS / iOS将使用的名称是应用程序标题栏中的名称。

有时字体书会显示带有空格的名称。

就我而言:字体名称是: 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}");
    }
}

之后,您可以使用 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>

然后将其应用于控件。

<Lable Text="Welcome" FontFamily="{StaticResource SFProDisplayUltraLight}"/>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM