我想在所有标签和条目中应用蒙特塞拉特 - 莱特字体样式,我是通过制作控件渲染器来实现的 . EntryRenderer工作正常,但LabelRenderer给出了带有消息的ArgumentNullException:Value不能为null .
[assembly: ExportRenderer(typeof(Label), typeof(ExtendedLabelRenderer))]
namespace NewApp.iOS.Renderer
{
public class ExtendedLabelRenderer : LabelRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
{
base.OnElementChanged(e);
if (e.NewElement != null)
{
Control.Font = UIFont.FromName("Montserrat-Light", 10f);
}
}
}
}
2 回答
试试下面的代码 . 如果您未在XAML中指定font-family和size,它将更新 . 现在您也可以在XAML中设置 .
作为解决此问题的更简单方法,我想推荐免费的开源Forms9Patch NuGet包的
Label
元素和/或CustomFontEffect
. 它允许您将自定义字体作为嵌入式资源存储在Xamarin.Forms应用程序's cross platform project (.NetStandard, PCL, or Shared Library) and then set that font'的嵌入式资源ID中,作为FontFamily
,用于具有FontFamily
属性的任何Xamarin.Forms元素 .完全披露:我是这个包的作者 .