核心数据+核心动画/ CALayer在一起?

我正在制作一个带有自定义界面的Cocoa应用程序。 到目前为止,我已经实现了使用CALayer进行渲染的一个应用程序版本,这对于CALayers的层次结构以及处理鼠标事件的[hitTest:]函数非常有用。 在这个早期版本中,应用程序的模型是我的自定义类。

然而,随着程序的增长,我感受到使用Core Data作为模型的愿望,不仅仅是为了简化绑定/撤消管理,还希望尝试新技术。

我的方法到目前为止:

在Core Data中:创建一个Block实体,其属性为xPos,yPos,width,height等等。

然后,为绘图创建一个BlockView:CALayer类,该类使用self.position.x = [self valueForKey:@“xPos”]等方法从模型中获取值。

在这种情况下,每个BlockView对象都必须保留xPos的本地副本,这不太合适

你们有没有更好的建议?

编辑:这个应用程序是一个信息可视化工具。 所以块的位置,尺寸很重要,应该保留以备后续分析。


编辑并保存这些“块”的位置和大小是您的应用程序要完成的任务吗?

如果不是,那么这些信息可能不应该在你的模型中。


使用核心数据来存储图形对象的实际运行时间位置不是一个好主意。 这样做直接将数据模型与视图混合。 这将使应用难以调试和维护,并且会使其组件重复使用的可用性大大降低。

相反,当创建视图对象时,应该让核心数据向视图控制器提供任何预先存在的位置数据,然后在处理完成时保存数据。

理想情况下,无论使用何种持久性存储方法,持久存储方法都应该工作,无论用于显示数据的视图类型如何,视图都应该可以工作。 例如,对于使用Web视图的视图,使用Core Animation甚至纯文本输出的视图,您应该能够使用相同的数据模型。


那么在你的实现中,每个BlockView都有它自己的x?

为什么不让BlockView类拥有对块的引用?

该视图可以用一个Block来初始化,它用来设置它的位置。

这会保持视图类和模型之间的良好分离。

链接地址: http://www.djcxy.com/p/39481.html

上一篇: Core Data + Core Animation/CALayer together?

下一篇: How can I animate the movement of a view or image along a curved path?