MonoTouch中的简单iPhone绘图应用程序
我有一个规范,可以在MonoTouch应用程序中构建一个非常简单的图表功能。到目前为止,我所做的一切都是基于表格的,所以这是一个新领域 在应用商店中可以找到许多图表示例,例如MindMeister和SimpleMindMindMapping应用程序 我需要用户能够点击一个视图来“放下”一个新的形状,给它贴上标签,并有选择地将它连接到一个现有的形状 实现这种交互功能的好方法是什么?我的第一个方法是放下一个从自定义图像创建的MonoTouch中的简单iPhone绘图应用程序,iphone,xamarin.ios,diagramming,Iphone,Xamarin.ios,Diagramming,我有一个规范,可以在MonoTouch应用程序中构建一个非常简单的图表功能。到目前为止,我所做的一切都是基于表格的,所以这是一个新领域 在应用商店中可以找到许多图表示例,例如MindMeister和SimpleMindMindMapping应用程序 我需要用户能够点击一个视图来“放下”一个新的形状,给它贴上标签,并有选择地将它连接到一个现有的形状 实现这种交互功能的好方法是什么?我的第一个方法是放下一个从自定义图像创建的UIImageView,然后确保它能够响应触摸事件来移动它。但是,当您想要添
UIImageView
,然后确保它能够响应触摸事件来移动它。但是,当您想要添加文本覆盖时,事情会变得更加复杂,因为您必须管理两个视图(图像和文本)
我可以采取什么方法
PS:如果这不适合这样做,请随意打击
更新:可以通过使用简单的标签覆盖来实现基本图表元素:
UILabel lbl = new UILabel(new RectangleF(...));
lbl.Text = "Whatever";
lbl.Layer.BorderWidth = 3f;
lbl.Layer.BorderColor ( new CGColor (1f, 0f, 0f) );
this.Add (lbl);
通过扩展gui元素类并覆盖
touchsbegind
、touchsmoved
和touchsend
事件,可以实现一些交互性。您想要做的事情并不难。我还没有准备好一个例子,但我会给你一些可能帮助你开始的步骤
public CALayer ContentsLayer { get; set; }
public override void Draw (RectangleF rect)
{
base.Draw(rect);
// Create an image context
UIGraphics.BeginImageContext(this.Bounds.Size);
// Render the contents of the view to the context
this.Layer.RenderInContext(UIGraphics.GetCurrentContext());
// Assign the contents to the layer
this.ContentsLayer = new CALayer();
this.ContentsLayer.Contents = UIGraphics.GetImageFromCurrentImageContext().CGImage;
// End the context
UIGraphics.EndImageContext();
}
此示例非常简单,不应按原样使用。例如,您应该提供何时接收自定义视图内容的逻辑。如果保持这样,每次调用Draw方法时,它都会创建一个新的上下文。你只需要做一次
将内容复制到图层后,可以通过superview将该图层添加到superview的图层并修改其框架,在该图层周围移动任意位置。您不必为superview创建另一个自定义视图,只需创建一个自定义UIgestureRecognitor,重写其自己的Touchs*方法并将其添加到superview即可
这样,您就有一个对象可以移动(层),该层同时保存您的形状和文本
我希望这有帮助