在Quartz 2d中使用Opacity生成的图层而不是绘制到视图的图层

时间:2011-04-17 16:40:46

标签: cocoa-touch ios opacity quartz-2d

首先,轻轻地和我在一起。我是Objective C和iOS编程的新手。 我刚刚购买了一份Opacity,我正在玩各种各样的图片。到目前为止,我唯一的成绩是设计并成功生成我自己的计算器设计 - 所以我还没有那么远!

具体来说,我想知道如何使用Opacity CALayer子类来“替换”UIView上的支持层。将子图层添加到现有视图层是显而易见的 - 我已经设法使其工作 - 但是如何使用Opacity CALayer子类来提供视图的背景层的初始内容?我已经尝试将drawInContext代码从Opacity子类复制到我的UIView子类上的drawRect中,该子类承载控制器''view'属性的代理视图但是(由于某种原因我无法理解)不起作用。

我假设视图的原始背衬层是图层数组中的项目'0'?我的最终目标是在视图后面我的图层,而不必“忽略”原始图层。

如果Brad Larson博士有可能读到这篇文章; ...... 我一遍又一遍地观看了您的Quartz 2D和动画视频,我已经阅读了我可以手写的课程笔记的所有副本,但我发现的所有示例都以托管视图中的图像开头 - 添加更多图层,这不是我真正想要的。我还阅读了大书呆子牧场指南并得到了所有的Conway和Hillegass的示例代码但是 - 我会被愚弄 - 他们也开始已经在视图中的图像!

如果有人可以帮助我 - 只需指出相关文档,请不要在此处编写大量代码 - 我会非常感激。

VV。 PS:我故意不使用IB,因为我想首先掌握Cocoa Touch的底层机制,我不会在校长上使用点符号:-)。 (见我的个人资料!)。

1 个答案:

答案 0 :(得分:0)

诀窍是将视图的类方法'layerClass'覆盖为在将其他层固定到层次结构之前所需的基础层子类。这会在实例化视图时构建视图的基础(隐式)层,然后我可以将其他层打下来。

这是一款有趣的游戏。我很快就会有心态!

这种技术与使用NSViews的相同要求明显不同,后者具有'setLayer'实例方法,可用于在实例化后更改隐式层。像UIView这样的轻量级对象没有提供昂贵的程序。