2017-08-13 13 views
0

私のアプリでカスタムフォントを使用していて、フォントを使用してLabelAttributes = "Bold" iOSシミュレータでは動作しますが、実際のデバイスでは動作しません。FontAttributesが指定されている場合、Xamarin.FormsカスタムフォントがiOSデバイスで取得されない

手順: 1. リソースフォルダにEffra_Std_Reg.ttfというフォントを追加しました。 2.アプリケーションで提供されるフォントにInfo.plistという要素を追加し、ビルドアクションを設定しました。 3. App.XAMLでスタイルを作成しました。 4.これらのスタイルをマイページのXAMLに追加しました。

すべて上記は、FontAttributesが設定されていないLabelに対してうまく機能します。スタイルやラベル自体にFontAttributes = "Bold"を設定すると、すぐにシステムフォントが使用されます。メモは、これがSimulatorで動作することを確認してください。

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)、FontFamilyに 'Effra-Bold'を指定します。

したがって、FontFamilyはの名前のスタイルである必要があります。

これはSimulatorで機能していたのは不思議です。

関連する問題