【问题标题】:How to use Core Graphics in a UIViewController's Subview in Xamarin iOS?如何在 Xamarin iOS 的 UIViewController 的子视图中使用核心图形?
【发布时间】:2016-08-23 05:28:56
【问题描述】:

我在故事板中设置了以下结构。我有一个 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();

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

编辑:

    View.AddSubview(new NewDrawingView());

还调用构造函数而不是 Draw 方法(并且似乎不会显示新视图)。如何调用子视图的绘制方法或在子视图中绘制?

【问题讨论】:

  • 为什么不简单地将子视图添加到控制器的视图中呢?这涵盖了所有现有控件,您可以通过设置 Frame 或使用 AutoLayout 约束来调整其大小。
  • @Krumelur 感谢您的回复。我已经更新了我的问题。我很困惑,我在网络上找不到在主视图中显示子视图(或在局部视图中绘图)的单个示例。你在哪里见过这样的例子吗?

标签: xamarin xamarin.ios uikit core-graphics


【解决方案1】:

终于找到了我需要的东西:

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 方法。

【讨论】:

    猜你喜欢
    • 2018-09-17
    • 2012-08-17
    • 1970-01-01
    • 2016-02-27
    • 1970-01-01
    • 2013-02-18
    • 1970-01-01
    • 1970-01-01
    • 2014-02-17
    相关资源
    最近更新 更多