我有一个规范,可以将非常简单的图表功能构建到MonoTouch应用程序中。到目前为止,我所做的一切都是以桌子为基础的,所以这是一个新的领域。
在应用程序商店中可以找到许多图表绘制的例子,例如MindMeister和SimpleMind的思维映射应用程序。
我需要用户能够点击一个视图“放下”一个新的形状,标签它,并可选择连接到一个现有的形状。
实现这种交互功能的好方法是什么?我的第一个目标是放下自定义映像创建的UIImageView,然后确保它能够响应触摸事件来移动它。但是,当您想要添加文本覆盖时,事情会变得更加复杂,因为您必须管理两个视图(图像和文本)。
我能遵循什么方法?
PS:如果这样做不合适的话,随便打吧!
Update:使用简单的标签覆盖可以实现基本关系图元素:
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元素类并重写TouchesBegan、TouchesMoved和TouchesEnd事件来实现某些交互性。
发布于 2011-06-04 08:27:06
你想做的事没那么难。我还没有准备好一个示例,但是我将给出一些步骤,这些步骤可能会帮助您开始工作。
的触摸。
简单的例子:
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();
}此示例非常简单,不应按原样使用。例如,您应该为何时接收自定义视图的内容提供逻辑。如果您将其保持为这样,则每次调用绘图方法时,它都会创建一个新的上下文。你只需要做一次。
在将内容复制到一个层后,您可以通过superview将其添加到superview层并修改其框架,从而在该层中任意移动。您不必为superview创建另一个自定义视图,您只需创建一个自定义UIGestureRecognizer,重写它自己的Touches*方法并将其添加到superview。
这样,您就有一个对象可以移动(层),它同时保存您的形状和文本。
我希望这能帮到你。
https://stackoverflow.com/questions/6230124
复制相似问题