我想在所有标签和条目中应用蒙特塞拉特光字体样式,我是通过制作控件渲染器来实现的。 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);
}
}
}
}
答案 0 :(得分:0)
尝试以下代码。如果您未在XAML中指定font-family和size,它将更新。现在您也可以在XAML中设置。
public class CustomLabelRender : LabelRenderer
{
protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
{
base.OnElementChanged(e);
if (Control != null)
{
if (e.NewElement != null)
{
if (!String.IsNullOrEmpty(Element.FontFamily))
Control.Font = UIFont.FromName(this.Element.FontFamily, (nfloat)e.NewElement.FontSize);
}
}
}
}
答案 1 :(得分:0)
作为解决此问题的更简单方法,我想推荐免费的开源Forms9Patch NuGet包的Label
元素和/或CustomFontEffect
。它允许您将自定义字体作为嵌入式资源存储在Xamarin.Forms应用程序的跨平台项目(.NetStandard,PCL或共享库)中,然后将该字体的嵌入式资源ID设置为{ {1}}对于任何具有FontFamily
属性的Xamarin.Forms元素。
FontFamily
完全披露:我是此套餐的作者。