1

我正在学习 Cappuccino Objective J,在绘图方面有点难以理解 CPView、CALayer、CPImageView 之间的区别。

我对 JavaScript 有很好的了解,但没有使用 Objective C 和 cocoa 的经验。

我正在为我的 uni 项目构建一个小应用程序,该应用程序需要拖放图像、绘制线条和其他形状来链接它们。做这样的事情的应用程序是gomockingbird

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

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

谢谢。

4

1 回答 1

1

一般来说,CALayers 是旧的,不应该使用。

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

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

- (void)drawRect:(CGRect)aRect;

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

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

重要的是要记住,进行自定义绘图的大视图往往会变慢。如果您在用户绘图时注意到一些缓慢,那么在所有图像下插入一个临时绘图视图可能是有意义的。然后,当用户放下绘图线时,“画布视图”会自行更新,临时绘图视图会从视图层次结构中删除。

希望那有所帮助!

于 2012-11-03T16:45:22.663 回答