2017-08-13 43 views
0

我在我們的應用程序中使用自定義字體,並且發現如果使用字體爲Label樣式設置FontAttributes =「Bold」適用於iOS模擬器,但不適用於真實設備。Xamarin.Forms自定義字體未在iOS設備上拾取FontAttributes時指定

採取的步驟: 1.將字體Effra_Std_Reg.ttf添加到資源文件夾中。 2.將此添加到應用程序提供的字體元素Info.plist並設置其構建操作。 3.在App.XAML中創建樣式。 4.將這些樣式添加到我的頁面上的XAML。

全部上述工作適用於沒有設置FontAttributes的Label。只要在樣式或標籤本身上設置FontAttributes =「Bold」,就會使用系統字體insted。注意,這可以在模擬器上運行。

我知道FontFamily是字體名稱在ttf文件中定義 - 不是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" /> 

回答

0

爲了得到它在設備上工作,我必須包括加粗字體文件( Effra_Std_Bd.ttf),並指定'Effra-Bold'的FontFamily。

因此看起來FontFamily需要是名稱樣式

奇怪的是,它在模擬器上工作。