iPhone图层管理-最佳做法

问题描述 投票:0回答:2

路易斯-谢谢您的投入。 这是我的工作以及我目前不了解的问题。

菜单(2)是响应触摸的UIImageViews。 每个都是自己的类。 您所说的“小精灵”也会对触摸产生响应。

在将菜单和精灵添加到该层的.m中,我通过以下代码创建了两个容器层:menuContainer = [CALayer layer]。

我使用spriteContainer上方的menuContainer对其进行了排序。 现在,精灵会移动到菜单下方-太好了! 但是在此过程中,子画面停止了对触摸的响应(我可以理解这一点,因为它们位于menuContainer层下方),菜单也停止了对触摸的响应(不要理解)。 继续使情况混乱,添加到menuContainer的图层通过弹出滑块来响应多点触摸手势,仍然可以读取多点触摸并弹出滑块,但是我无法滑动滑块。 这使我彻底困惑。

谢谢。

我的应用程序正在构建一个背景层,然后构建一些应该始终位于顶部的菜单层。 此后,我添加了许多移动图层并非常快地删除了许多移动图层。

我的问题是我希望菜单层(一共有4个)始终位于其他层的前面。 我曾考虑过构建一个层次结构,并使用insertsublayer:atindex:方法,使菜单的名义索引为1000,并在较低的索引(例如200)处插入多个移动层。如果我在200处插入一层,然后接下来是200,分配给200的第一层会转移(移至201)还是被吹走?

我试过使用insertsublayer:下面的方法插入各层:但这并没有给我想要的结果。

谢谢您的帮助。

iphone core-animation calayer layer
2个回答
2
投票

您不能真正做到这一点,层索引不是z顺序,而是数组索引。 从文档中

该值不得大于子层数组中元素的数量。

我认为最好为您服务,但实际上是对层进行真正的分层,而不是尝试将所有活动层都推入一个超级层。 在其他但不是所有的菜单层中,将其放入容器层,然后将其插入到所需的根层中。 同样,将所有子画面插入一个容器层,并将其放在所需的根层中。

根据您的修改的其他内容:

层本质上是一个图形结构,它们不直接响应事件。 您可能需要自己编写代码以在附加视图中对它们进行hitTest来处理该问题,或者您需要使用UIViews而不是图层。 您可能以前就没有使用它了,因为您以一种使视图层次结构和图层层次结构保持一致的方式来操作图层,但是从您最初的问题中我不清楚您使用的是视图,而不是纯粹基于图层的设定。


-1
投票

路易斯-谢谢您的投入。 这是我的工作以及我目前不了解的问题。

菜单(2)是响应触摸的UIImageViews。 每个都是自己的类。 您所说的“小精灵”也会对触摸产生响应。

在将菜单和精灵添加到该层的.m中,我通过以下代码创建了两个容器层:menuContainer = [CALayer layer]。

我使用spriteContainer上方的menuContainer对其进行了排序。 现在,精灵会移动到菜单下方-太好了! 但是在此过程中,子画面停止了对触摸的响应(我可以理解这一点,因为它们位于menuContainer层下方),菜单也停止了对触摸的响应(不要理解)。 继续使情况混乱,添加到menuContainer的图层通过弹出滑块来响应多点触摸手势,仍然可以读取多点触摸并弹出滑块,但是我无法滑动滑块。 这使我彻底困惑。

谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.