Xamarin表单,iOS自定义渲染器字体大小

时间:2017-06-11 06:04:39

标签: xamarin.forms

我使用下面的代码为我的所有按钮设置自定义字体,所有按钮都有我的新字体,一切都很好,问题是 font size ,当我在xaml中更改它,没有任何变化。

using System;
using System.Diagnostics;
using LAVA.iOS.CustomRenderer;
using LAVA.Utils.CustomRenderer;
using UIKit;
using Xamarin.Forms;
using Xamarin.Forms.Platform.iOS;

[assembly: ExportRenderer(typeof(CustomButton), typeof(CustomButtonRenderer))]

namespace LAVA.iOS.CustomRenderer
{
    public class CustomButtonRenderer : ButtonRenderer
{ 
    protected override void OnElementChanged(ElementChangedEventArgs<Button> e)
    {
        base.OnElementChanged(e);
        if (Control == null || e.NewElement == null) return;
        Control.Layer.BorderColor = e.NewElement.BorderColor.ToCGColor();
        Control.Layer.BorderWidth = (nfloat) e.NewElement.BorderWidth;
        Control.Layer.CornerRadius = e.NewElement.BorderRadius;
        try
        {
            Control.Font = AppDelegate.GetFont(Control.Font.PointSize);
        }
        catch (Exception exception)
        {
            Debug.WriteLine(exception.Message);
        }
    }
  }

}

这是我的AppDelegate.GetFont()方法:

public static UIFont GetFont(nfloat fontSize)
    {
        if (AppFont == null)
            AppFont = UIFont.FromName(Constants.FONT_IOS, fontSize);
        else if (AppFont.PointSize != fontSize)
            AppFont.WithSize(fontSize);
        return AppFont;
    }

但字体大小不会改变。

1 个答案:

答案 0 :(得分:0)

您应该在e.NewElement上使用一个属性(例如e.NewElement.FontSize)以获取所需的字体大小。控件是本机控件,因此您只需要获得一种已经具有的相同大小的字体即可。