【发布时间】:2012-05-27 06:49:08
【问题描述】:
在iOS上,如果一个view有好几层,那么drawRect方法是否可以选择任意一层显示,1秒后再选择另一层显示,实现动画效果?
现在,我有几个图层,但我不认为它们是视图的图层(它们只是单独的图层,不是父图层的子图层),因为我只是使用它们创建的
CGLayerCreateWithContext(context, self.view.bounds.size, NULL);
在drawRect,我使用
CGContextDrawLayerAtPoint(context, self.bounds.origin, layer1);
将图层绘制到视图上...它可以工作,但这不就像将图层绘制到图层上(将图层绘制到视图的图层上)吗?难道没有更快的方法,就是告诉视图使用layer1或layer2,有点像
self.layer = layer1;
但它不能,因为layer 是只读的。这可以实现吗?
【问题讨论】:
-
您是否试图通过将每一帧放在单独的图层中并交换图层来实现动画?
-
这个问题没有多大意义,因为你混淆了两个不同的东西:
CGLayers 和CALayers。它们具有相似的名称,但它们完全不同。你不能混合和匹配它们。CGLayerCreateWithContext是CGLayer,但self.layer是CALayer。 -
@PartiallyFinite 是的...例如 2 层,并使用这 2 层制作动画...
-
@Kurt我读到,与其画到BitmapContext中,不如画到一个Layer中,因为它缓存在显卡中,所以这个Layer是CGLayer?是否也可以绘制到 CALayer 中? (嗯......然后我看到了PartiallyFinite的回答......几乎画到一个视图中,然后从视图中提取图层......)
-
@PartiallyFinite 答案的重要部分不是他“从视图中提取图层”的部分——这只是让图层向您展示的一种简单方法。在实践中,您可以轻松创建
CALayer并设置其backgroundColor属性。
标签: iphone ios uiview calayer drawrect