14

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

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

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

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

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

4

2 回答 2

28

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

[CATransaction setDisableActions:YES];
于 2013-08-11T01:54:04.020 回答
5

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

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

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

希望这对您有所帮助。

于 2013-08-11T00:41:21.877 回答