如何在 Xamarin iOS 中的 UIViewController 的子视图中使用 Core Graphics?

How to use Core Graphics in a UIViewController's Subview in Xamarin iOS?

我在故事板中设置了以下结构。我有一个 UIViewController,其中包含一个 UIView,其中包含按钮、文本和一个较小的 UIView。我想绘制到较小的 UIView。

我目前的工作代码是:

public partial class MyDrawingController : UIViewController
{
    public MyDrawingController (IntPtr handle) : base(handle) { }

    public override void LoadView ()
    {
        base.LoadView ();
        View = new NewDrawingView ();
    }
}

public class NewDrawingView : UIView
{
    public NewDrawingView () : base() {}

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

    public void DrawMe(CGRect rect) {
        // Drawing code
    }
}

这导致较大的 UIView 的内容完全被我的绘图取代(覆盖我的文本和按钮)。

    NewDrawingView = new NewDrawingView();

虽然这会调用构造函数,但永远不会调用 UIView 的 Draw 方法,因此永远不会正确访问 UIGraphics 上下文来进行绘图。

编辑:

    View.AddSubview(new NewDrawingView());

也调用构造函数而不是 Draw 方法(并且似乎没有显示新视图)。如何调用子视图的绘制方法或以其他方式在子视图内绘制?

终于在以下位置找到了我需要的东西:

How to add subview above the keyboard in monotouch/Xamarin.Ios?

public override void LoadView ()
{
    base.LoadView ();
    NewDrawingView drawingView = new NewDrawingView{
        Frame = new RectangleF (0, 0, 100, 100)
    };
    View.AddSubview (drawingView);
}

这段代码正确地初始化了我的绘图视图,并在将子视图添加到视图控制器的主视图时调用了 draw 方法。