设置元素属性时,为什么每次都需要更改fontStyle?

时间:2017-08-13 17:15:59

标签: xamarin xamarin.forms

我已经接管了应用程序的开发,我正在寻找一个iOS标签自定义渲染器。我有下面的代码。

我想知道的是,当textColor和textProperty被更改时,是否有人能够看到调用SetTextFontStyle方法的原因。

还有一种方法可以使用这种自定义呈现多种字体类型吗?我希望能够在可能的情况下将字体类型传递给渲染器。

public class LabelBodyCustomRenderer : LabelRenderer
{
    public LabelBodyCustomRenderer()
    {
    }
    protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
    {
        base.OnElementChanged(e);
        if (Control != null)
            Control.Font = UIFont.GetPreferredFontForTextStyle(UIFontTextStyle.Body);

    }

    protected override void OnElementPropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
    {
        base.OnElementPropertyChanged(sender, e);
        if (e.PropertyName == Label.TextColorProperty.PropertyName)
            SetFontTextStyle();
        else if (e.PropertyName == Label.FontProperty.PropertyName)
            SetFontTextStyle();
        else if (e.PropertyName == Label.TextProperty.PropertyName || e.PropertyName == Label.FormattedTextProperty.PropertyName)
            SetFontTextStyle();
    }

    void SetFontTextStyle()
    {
        Control.Font = UIFont.GetPreferredFontForTextStyle(UIFontTextStyle.Body);
    }
}

0 个答案:

没有答案