Objective-J CPView,CALayer,CPImageView Drawing

时间:2012-11-03 16:07:44

标签: cappuccino

我正在学习卡布奇诺目标J,在绘图方面有点难以理解CPView,CALayer,CPImageView之间的区别。

我对JavaScript有很好的了解,但没有使用Objective C&可可。

我正在为我的uni项目构建一个小应用程序,这将需要拖动和一滴图像,绘制线条和其他形状来链接它们。执行此类操作的应用是gomockingbird

我的问题是上面提到的哪一个我应该放弃和借鉴。我查看了cappucino.org网站上的FloorPlan示例,它使用CPImageView对象来拖放项目。由于我从教程中读到CALayer针对此类操作进行了优化,因此我很难知道要使用哪一个。

欢迎任何示例或教程的链接。

感谢。

1 个答案:

答案 0 :(得分:1)

一般来说,CALayers已经过时了,不应该使用。

CPView是屏幕上最基本的UI元素。几乎所有东西都由视图(窗口,图像视图,按钮等)支持。视图可以包含任意数量的子视图和单个超级视图。

如果你想在视图中自定义绘图(即CoreGraphics或类似API的画布),你需要继承UIView或UIView的后代。然后,您将覆盖

- (void)drawRect:(CGRect)aRect;

UIImageView是UIView的子类。它的唯一目的是在屏幕上显示图像。

对于您的项目,我想我会做以下事情: 创建一个“画布视图”,这是用户将与之交互的内容。根据需要将UIImageViews拖放到画布上。然后,对于线条绘制,让画布视图本身从每个图像中绘制线条。

重要的是要记住,进行自定义绘制的大型视图往往会变慢。如果您在用户绘图时发现某些缓慢,则在所有图像下插入临时绘图视图可能是有意义的。然后,当用户删除绘制线时,“画布视图”将自行更新,并从视图层次结构中删除临时绘图视图。

希望有所帮助!