隐藏CALayer(没有动画)的最佳方法是什么?

时间:2013-08-10 23:01:19

标签: ios calayer

我有一些全屏CALayers作为单个UIView的一部分。根据用户与视图的交互方式,我需要显示一个图层并隐藏所有其他图层。我目前正在通过改变不透明度来做到这一点,即

要隐藏的图层:[layer setOpacity:0]; 要显示的图层:[layer setOpacity:1];

由于某种原因我不太明白,这似乎会在屏幕上产生闪烁效果。部分是为了避免这种情况,但也因为我的印象是不透明度的变化会影响性能,我想知道改变不透明度是否真的是隐藏和/或显示CALayers的最佳方式,例如我是否应该考虑更改zPosition或更改其位置,以便它不再出现在屏幕上。

顺便说一句,我不想​​为过渡做动画。

提前感谢任何指示或帮助。

2 个答案:

答案 0 :(得分:26)

隐藏图层的常规方法是将其hidden属性设置为YES,但将opacity设置为0.0以实现此功能并没有什么坏处,这取决于您的使用方案。
如果您的CALayer不是您的UIView底层(UIView实例的layer属性),请更改opacityhidden属性默认触发动画。为防止这种情况,请在更改这些属性之前添加此代码:

[CATransaction setDisableActions:YES];

答案 1 :(得分:5)

CALayer有一个名为“hidden”的属性,尝试将其设置为YES和NO,而不是切换不透明度。

要隐藏的图层:[layer setHidden:YES];

要显示的图层:[layer setHidden:NO];

希望这会对你有所帮助。