2016-12-06 62 views
0

我想创建一个基于UITextField的自定义控件。其中一个要求是能够在设计时更改控件的边框颜色。Xamarin.iOS更改bordercolor为自定义控件

目前我有下面的代码(见下文)。此时,自定义控件显示在设计器中,我可以将其拖到我的视图上。设计师属性“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

只要把

Layer.BorderWidth = 1.0f; 

Draw方法

+0

谢谢你这么多的作品就像一个魅力! –

+0

我很高兴这对你有帮助...我有同样的问题,使用XCode和Swift自定义控件前段时间,我浪费了几个小时才发现唯一的问题是边框宽度-_-' – Nerkyator

相关问题