为什么转换的UIView与层次结构中较高的其他视图重叠?

时间:2014-05-09 16:44:58

标签: ios objective-c cocoa-touch uiview catransform3d

我有一个视图,我应用了转换的图层 - 改变了m34字段,在x轴上旋转它并在x和y上缩放它。然后我将这个视图添加到更大的超视图中。我的问题是,我添加到更大的超视图中的每个其他视图都被变换后的视图隐藏或重叠(如果新视图的帧与变换后的视图的帧相交),即使新视图在层次结构中高于转换后的视图和那些新视图会添加到更大的超级视图的subviews数组的末尾。任何想法这种行为背后的原因是什么? :-)非常感谢!

2 个答案:

答案 0 :(得分:5)

3D变换用于制作伪3D。在这个3D空间中,您的图层与其他图层重叠。要更改其z-pozition,请使用CAlayer的属性

@property CGFloat zPosition;
  

图层在z轴上的位置。动画。默认值为   此属性为0.更改此属性的值会更改   屏幕上图层的前后排序。这可能会影响到   框架矩形重叠的图层的可见性。这个的价值   财产以分数衡量。

答案 1 :(得分:1)

视图层次结构就像一系列纸张 - 它们可以在彼此“顶部”,但没有真正的深度。只要在图层上放置3D变换,就会有一些深度,如果你围绕x轴旋转它,它将在其他视图前面伸出。

您可以尝试调整图层的z位置,将其移动到其他视图后面。