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

pin*_*gin 12 calayer ios

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

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

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

顺便说一下,我不想为过渡做动画.

在此先感谢您的任何指示或帮助.

liu*_*ong 27

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

[CATransaction setDisableActions:YES];
Run Code Online (Sandbox Code Playgroud)


小智 5

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

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

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

希望这对你有所帮助.