我有一些全屏CALayers作为单个UIView的一部分。根据用户与视图的交互方式,我需要显示一个图层并隐藏所有其他图层。我目前正在通过改变不透明度来做到这一点,即
要隐藏的图层:[layer setOpacity:0]; 要显示的图层:[layer setOpacity:1];
由于某种原因我不太明白,这似乎会在屏幕上产生闪烁效果。部分是为了避免这种情况,但也因为我的印象是不透明度的变化会影响性能,我想知道改变不透明度是否真的是隐藏和/或显示CALayers的最佳方式,例如我是否应该考虑更改zPosition或更改其位置,以便它不再出现在屏幕上。
顺便说一句,我不想为过渡做动画。
提前感谢任何指示或帮助。
答案 0 :(得分:26)
隐藏图层的常规方法是将其hidden
属性设置为YES
,但将opacity
设置为0.0以实现此功能并没有什么坏处,这取决于您的使用方案。
如果您的CALayer
不是您的UIView
底层(UIView
实例的layer
属性),请更改opacity
或hidden
属性默认触发动画。为防止这种情况,请在更改这些属性之前添加此代码:
[CATransaction setDisableActions:YES];
答案 1 :(得分:5)
CALayer有一个名为“hidden”的属性,尝试将其设置为YES和NO,而不是切换不透明度。
要隐藏的图层:[layer setHidden:YES];
要显示的图层:[layer setHidden:NO];
希望这会对你有所帮助。