我有一个Android和iOs Forms应用程序,当前使用每个OS的默认字体。我希望两个应用程序看起来都尽可能相似。
有没有可以用于此目的的字体包,以及如何实现此功能。我意识到字体的选择是很多人可能会有不同的看法,但是一些起步建议和任何建议将不胜感激。
答案 0 :(得分:1)
我认为,您可以为此使用一些常见的FontFamily
。
As 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;
}
}
希望这会有所帮助! :)