【发布时间】:2018-05-18 20:51:31
【问题描述】:
我想在所有标签和条目中应用 Montserrat-Light 字体样式,我通过制作控件的渲染器来实现。 EntryRenderer 工作正常,但 LabelRenderer 给出 ArgumentNullException 消息:值不能为空。
[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);
}
}
}
}
【问题讨论】:
-
不,不是,因为我应用了背景颜色并且效果很好
-
那么什么是null呢?你调试了吗?
-
是的,但它总是在 Control.Font = UIFont.FromName("Montserrat-Light", 10f);这一行
-
如果找不到字体,那么
UIFont.FromName("Montserrat-Light", 10f);行将产生 null 或检查 Control != null 而不是 NewElement。另外,为什么要使用自定义渲染器?这可以通过样式完美完成:) -
@GeraldVersluis 仅供参考:由于他将该字体应用于所有标签/条目,因此自定义渲染器比使用样式更快、更高效。
标签: xaml xamarin xamarin.forms xamarin.ios