Xamarin.iOS更改bordercolor以进行自定义控件

时间:2016-12-06 11:11:28

标签: c# xamarin.ios custom-controls

我正在尝试基于UITextField创建自定义控件。其中一个要求是能够在设计时更改控件的边框颜色。

目前我有以下代码(见下文)。此时,自定义控件显示在设计器中,我可以将其拖到我的视图上。设计师属性“BorderColor”也在设计师中显示,我可以选择一种颜色。但是控件本身的边框颜色不会改变(只有属性值会改变,但控件的边框会保持黑色)。

[Register("RidderTextField"), DesignTimeVisible(true)]
public class RidderTextField
    : UITextField
{
    private UIColor _borderColor = UIColor.Orange;

    public RidderTextField(IntPtr handle) : base(handle) { }
    public RidderTextField(RectangleF frame) : base(frame) { }
    public RidderTextField()
    {
        Initialize();
    }

    [Export("BorderColor"), Browsable(true)]
    public UIColor BorderColor
    {
        get { return _borderColor; }
        set
        {
            _borderColor = value;
            SetNeedsDisplay();
        }
    }

    public override void AwakeFromNib()
    {
        base.AwakeFromNib();

        Initialize();
    }

    private void Initialize()
    {
        BackgroundColor = UIColor.White;
        BorderStyle = UITextBorderStyle.Line;
    }

    public override void Draw(CoreGraphics.CGRect rect)
    {
        base.Draw(rect);

        Layer.BorderColor = BorderColor.CGColor;
    }
}

非常感谢任何帮助或指导。

1 个答案:

答案 0 :(得分:2)

刚刚放

Layer.BorderWidth = 1.0f;
Draw方法

中的