如何在 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 方法。
我在故事板中设置了以下结构。我有一个 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 方法。