当FontAttributes指定时,Xamarin.Forms自定义字体在iOS设备上没有被选中

时间:2017-08-13 09:18:32

标签: ios fonts xamarin.forms

我在我们的应用中使用自定义字体,并且发现如果我设置FontAttributes =" Bold"对于使用该字体的Label样式,它适用于iOS模拟器,但不适用于真实设备。

采取的步骤: 1.将字体Effra_Std_Reg.ttf添加到 resources 文件夹中。 2.将此添加到 Info.plist 中的由应用程序提供的字体元素并设置其构建操作。 3.在App.XAML中创建样式。 4.在我的页面上将这些样式添加到XAML。

全部以上版本适用于未设置FontAttributes的Label。一旦我设置FontAttributes =" Bold"在Style或Label本身上,系统字体用于insted。注意这适用于模拟器

我知道FontFamily是ttf文件中定义的字体 Name - 而不是ttf文件名。

这是在运行iOS 10.3.3的iPad上。

我的App.XAML是:

<?xml version="1.0" encoding="utf-8" ?>
<Application x:Class="FontTest.App"
             xmlns="http://xamarin.com/schemas/2014/forms"
             xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml">
    <Application.Resources>
        <ResourceDictionary>
            <Style TargetType="Label">
                <Setter Property="FontSize" Value="30" />
            </Style>

            <Style x:Key="PlainLabelStyle" TargetType="Label">
                <Setter Property="FontFamily">
                    <Setter.Value>
                        <OnPlatform x:TypeArguments="x:String"
                                    Android="Effra_Std_Rg.ttf#Effra"
                                    iOS="Effra" />
                    </Setter.Value>
                </Setter>
            </Style>

            <Style x:Key="BoldLabelStyle" TargetType="Label">
                <Setter Property="FontFamily">
                    <Setter.Value>
                        <OnPlatform x:TypeArguments="x:String"
                                    Android="Effra_Std_Bd.ttf#Effra"
                                    iOS="Effra" />
                    </Setter.Value>
                </Setter>
               <Setter Property="FontAttributes" Value="Bold" />
            </Style>

        </ResourceDictionary>
    </Application.Resources>
</Application>

我的页面XAML(摘录)是:

 <Label Grid.Row="4"
               Grid.Column="1"
               Style="{StaticResource BoldLabelStyle}"
               Text="QWERTYUIOPASDFGHJKLZXCVBNM" />

1 个答案:

答案 0 :(得分:0)

为了让它在设备上运行,我必须包含粗体字体文件(Effra_Std_Bd.ttf),并指定&#39; Effra-Bold&#39;的字体系列。

所以看起来FontFamily需要是 Name Style

奇怪它在模拟器上有效。