关于我可以同时用于Android和iOS的字体的建议,这些字体看起来与每种字体的系统默认字体相似

时间:2019-04-01 06:49:21

标签: xamarin xamarin.forms

我有一个Android和iOs Forms应用程序,当前使用每个OS的默认字体。我希望两个应用程序看起来都尽可能相似。

有没有可以用于此目的的字体包,以及如何实现此功能。我意识到字体的选择是很多人可能会有不同的看法,但是一些起步建议和任何建议将不胜感激。

1 个答案:

答案 0 :(得分:1)

我认为,您可以为此使用一些常见的FontFamilyAs from this tutorial,您必须添加所需的字体(.ttf格式) 对于每个平台,您需要执行以下操作: iOS:

  

在您喜欢的文本编辑器中和本节中打开info.plist。

<key>UIAppFonts</key>
<array>
<string>Fonts/Lato-Regular.ttf</string>
<string>Fonts/Stackyard.ttf</string>
<string>Fonts/ComicSaaaaaans.ttf</string>
</array>
  

从那里,您可以使用iOS Appearance API将字体应用于所需的任何字体。就我而言,这是导航栏,结果是这样:

UINavigationBar.Appearance.SetTitleTextAttributes(new UITextAttributes
{
   TextColor = UIColor.White,
   Font = UIFont.FromName("Stackyard PERSONAL USE", 32)
});

对于Android:

  

现在我们要做的是为其中的控件创建CustomRenderer   我们要显示我们的字体!   一个明显的选择是Label控件。当我们定义渲染器时   此代码覆盖ElementChanged,我们可以使用StyleId,例如   您已经在上面看到了,可以从我们的共享中指定要使用的字体   代码!

protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
{
   base.OnElementChanged(e);

   if (!string.IsNullOrEmpty(e.NewElement?.StyleId))
   {
      var font = Typeface.CreateFromAsset(Forms.Context.ApplicationContext.Assets, e.NewElement.StyleId + ".ttf");

       Control.Typeface = font;
    }
}

希望这会有所帮助! :)