2010-10-24 35 views
1

我目前在界面生成器中创建了一个用户界面 - 它基本上由背景图片和几个标签组成。我需要为标签下方的某些元素(图像)制作动画,但要在背景上进行动画制作,但我也需要按特定的z顺序绘制它们。在iPhone上更改用户界面绘制顺序

我四处张望,发现CATransformLayer--我仍在研究它。为了模拟3D,这是管理图像的Z-顺序的最佳方式吗?我不想使用Open GL为我做将是非常简单的假3D动画...

回答

2

背景:

在iPhone上,UIViews有一个子视图的NSArray。首先绘制UIWindow的根,然后是子视图,然后是子视图。另外,还有第二层:每个UIView都有一个CALayer数组。根CALayer首先绘制,然后依次绘制每个CALayer。

建议:

是的,你可以做到这一点,你概括。但是,如果您执行以下操作,代码可能会更简单一些:

在您的具体情况下,使用UIView来保存背景。给它两个子视图,最初是透明的,全尺寸的,在界面生成器中设置弹簧和支柱以保持背景的完整大小。将它们排列在Interface Builder的大纲视图(-0)中,以便UIView ImageViewHolder在UIView ButtonViewHolder之前列出。

这样,你可以插入和删除UIImageViews从ImageViewHolder UIView,他们将被绘制在背景之上,并在UIButtons之下。

+0

谢谢!所以,如果我将3个不同的UIImageView添加到ImageViewHolder视图中,是否添加最后一个或第一个绘制的视图?另外,如果我添加的第一个视图绘制在底部,是否有办法将它保留在顶部? – 2010-10-24 04:23:40

+0

- [addSubview:]把它放在最后,所以它绘制最后一个,但UIView有其他的方法让你把它放在绘图顺序中的位置。不过,不要使用普通的NSMutableArray方法来更改子视图数组。 – DavidPhillipOster 2010-10-24 04:28:46

+0

感谢您的帮助。它看起来像我可以使用像bringSubviewToFront做什么,我想要:) – 2010-10-24 04:55:27

相关问题