我目前正在尝试通过为应用中的所有标签创建自定义渲染器来更改Xamarin.Forms应用的字体。似乎存在一个问题,在某些位置,文本更改为正确的字体,但是在大多数应用程序中,标签似乎丢失了文本并且根本不显示文本。
我正在创建一个Xamarin.Forms应用程序,该应用程序将对没有字体属性的文本使用Gotham-Book字体,对具有粗体字体属性的文本使用Gotham-Medium字体。两种字体均为.TTF,并且位于Resources文件夹内的Fonts文件夹中。
using System;
using System.ComponentModel;
using DemoApp.Controls;
using DemoApp.iOS.Renderers;
using Foundation;
using UIKit;
using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;
[assembly: ExportRenderer(typeof(Label), typeof(CustomLabelRenderer))]
namespace DemoApp.iOS.Renderers
{
public class CustomLabelRenderer : LabelRenderer
{
private bool _disposed;
protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
{
try
{
base.OnElementChanged(e);
if (Control != null)
{
var sizeToSet = GetNewFontSize();
if (Element.FontAttributes == FontAttributes.Bold)
{
Control.Font = UIFont.FromName("Gotham-Medium", (float)sizeToSet);
}
else
{
Control.Font = UIFont.FromName("Gotham-Book", (float)sizeToSet);
}
}
}
catch (Exception ex)
{
//Log
}
}
}
}
我希望整个应用程序都能将应用程序更改为新的Gotham字体,但是大多数应用程序标签会丢失其文本且不显示任何内容。