【发布时间】: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