我正在学习Cappuccino Objective J,当涉及到绘画时,我有一点难以理解CPView,CALayer,CPImageView之间的区别。
我有很好的JavaScript知识,但没有与目标C和可可的经验。
我正在为我的uni项目建立一个小应用程序,这将需要拖放图像,绘制线和其他形状来链接它们。这样做的应用程序是gomockingbird。
我的问题是,我应该使用上面提到的哪一个来删除和绘制。我已经看过cappucino.org网站上的FloorPlan示例,它使用CPImageView对象来拖放项目。因为我在教程中读到CALayer针对这种类型的操作进行了优化,所以我很难知道该使用哪种类型的操作。
欢迎任何指向示例或教程的链接。
谢谢。
发布于 2012-11-04 00:45:23
一般来说,CALayers是旧的,不应该使用。
CPViews是屏幕上最基本的UI元素。几乎所有的东西都有一个视图支持(窗口、图像视图、按钮等)。视图可以有任意数量的子视图和单个superview。
如果你想在视图中自定义绘图(即CoreGraphics或canvas之类的API),你需要继承UIView或UIView的子类。然后,您将覆盖
- (void)drawRect:(CGRect)aRect;UIImageView是UIView的一个子类。它的唯一目的是在屏幕上显示图像。
对于您的项目,我认为我将执行以下操作:创建一个用户将与之交互的“画布视图”。根据需要将UIImageViews拖放到画布上。然后,对于线条绘制,让画布视图本身从每个图像中绘制线条。
重要的是要记住,执行自定义绘图的大型视图往往会变得很慢。如果您注意到用户在绘图时速度较慢,那么在所有图像下插入一个临时绘图视图可能是有意义的。然后,当用户放下绘制线时,“画布视图”会自我更新,并从视图层次结构中删除临时绘图视图。
希望这能有所帮助!
https://stackoverflow.com/questions/13210937
复制相似问题