【发布时间】:2009-08-01 03:09:57
【问题描述】:
如何在同一个 UIView 中正确使用这两者?
我有一个自定义的子类 CALayer,我在其中绘制了 drawInContext 中的图案
我有另一个,我在其中设置了一个覆盖 PNG 图像作为内容。
我有第三个只是背景。
如何叠加所有这 3 个项目?
[self.layer addSublayer:bottomLayer]; // this line is the problem
[squaresLayer drawInContext:viewContext];
[self.layer addSublayer:imgLayer];
如果我按照这个顺序,另外两个自己会正确绘制。无论我尝试将bottomLayer放在哪里,它总是会阻止squaresLayer绘制。我需要 3 层的原因是我打算为背景和自定义层中的颜色设置动画。顶层只是一个图形叠加层。
【问题讨论】:
-
几个问题:你确定没有绘制图层吗?或者它是否被绘制但没有给你你正在寻找的结果?图层如何重叠?这些层是否必须都在同一个视图中,或者您可以将其中一个拆分到不同的视图中?
-
嗨,好吧,他们应该能够在同一个 UIView 中,我想我可以使用子视图,使用单独的视图来合成图层似乎有点多。但是,我确实提出了一个解决方案,方法是制作 2 个自定义图层。通过“addSublayer”添加到 self.layer 的任何内容似乎都绘制在通过“drawInContext”绘制的任何内容之上,后者直接绘制到视图的 .layer 的上下文中。好的,弄清楚我只是在该上下文中渲染了 2 层,并在顶部添加了 imgLayer。工作正常,至于动画使用 NSTimer 刷新视图,它运行 drawInContext。
标签: iphone objective-c uiview calayer cgcontext