我有一個子類父UIView
對象,它應該添加另一個子類UIView
。這是UIView
我想補充以及其中Draw
方法不叫:子類UIView(另一個子類UIView子)的繪製方法不叫
public class Circle : UIView
{
private UIColor color;
public Circle()
{
this.color = UIColor.Black;
this.BackgroundColor = UIColor.Clear;
}
public Circle (UIColor color)
{
this.color = color;
this.BackgroundColor = UIColor.Clear;
}
public override void Draw (CGRect rect)
{
base.Draw (rect);
// Get the context
CGContext context = UIGraphics.GetCurrentContext();
context.AddEllipseInRect (rect);
context.SetFillColor (color.CGColor);
context.FillPath();
}
}
這是我如何加入圈:
Circle circle = new Circle (UIColor.Red);
circle.TranslatesAutoresizingMaskIntoConstraints = false;
AddSubview (circle);
AddConstraint(NSLayoutConstraint.Create(circle, NSLayoutAttribute.Left, NSLayoutRelation.Equal, line, NSLayoutAttribute.Left, 1, 10));
AddConstraint(NSLayoutConstraint.Create(circle, NSLayoutAttribute.CenterY, NSLayoutRelation.Equal, line, NSLayoutAttribute.CenterY, 1, 0));
AddConstraint(NSLayoutConstraint.Create(circle, NSLayoutAttribute.Height, NSLayoutRelation.Equal, null, NSLayoutAttribute.NoAttribute, 1, 6));
AddConstraint(NSLayoutConstraint.Create(circle, NSLayoutAttribute.Width, NSLayoutRelation.Equal, null, NSLayoutAttribute.NoAttribute, 1, 6));
這上面的代碼又在父母的方法Draw
。父級中的對象繪製得很好,除了圓圈,即使我使用下面的代碼作爲圈子它顯示正確。所以約束是好的。
UIView circle = new UIView() { BackgroundColor = UIColor.Red };
我在做什麼錯了?我不能重寫Draw
方法(在子類父類和子類圈)? PS:我必須指出,圓圈應該重疊一條線。但Draw
永遠不會被調用,所以它似乎沒有得到一個框架。
我把父母代碼從'Draw'移到構造函數中,現在顯示了圓圈!謝謝! – testing