我想在所有的标签和条目中应用蒙特萨拉特-光字体样式,我是通过使控件的渲染器来做到这一点的。EntryRenderer工作正常,但LabelRenderer提供的值为ArgumentNullException,消息为: Value不能为空。
[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);
}
}
}
}发布于 2018-05-18 18:00:59
试试下面的代码。如果你没有在你的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);
}
}
}
}发布于 2018-05-18 20:51:31
作为解决这个问题的一种更简单的方法,我建议使用Label元素和/或免费的开源Forms9Patch NuGet包的CustomFontEffect。它允许您将自定义字体作为嵌入资源存储在Xamarin.Forms应用程序的跨平台项目(.NetStandard、PCL或共享库)中,然后将该字体的嵌入资源ID设置为具有FontFamily属性的任何Xamarin.Forms元素的FontFamily。
var entry = new Xamarin.Forms.Entry {
Text = "Xamarin.Forms.Entry element",
FontFamily = "Forms9PatchDemo.Resources.Fonts.Pacifico.ttf"
};
entry.Effects.Add(Effect.Resolve("Forms9Patch.CustomFontEffect"));
var label = new Forms9Patch.Label
{
Text = "Custom Font Text",
FontFamily = "Forms9PatchDemo.Resources.Fonts.Pacifico.ttf"
}完全公开:我是这个包的作者。
https://stackoverflow.com/questions/50408232
复制相似问题