4

我没有明确设置我的子层的不透明度——只有超级层的通过opacity属性。虽然超层的不透明度确实按预期发生了变化,但我的子层的不透明度似乎也发生了变化,导致超层中这些子层下方的元素暴露。为什么会发生这种情况?

4

1 回答 1

5

为什么这让你感到惊讶?你期望会发生什么?如果你不想要这个,不要把那些子层放在那个超级层里面。只需将它们放在它上面(也许在一个单独的超级层中)。


编辑:我现在明白你的问题了。您正在运行核心动画优化。Core Animation 试图通过在合成之前将不透明度应用于所有子层来节省时间。这样它就可以只合成一次(这让它忽略容器超级层)。大多数情况下,这可以解决并提高性能。

你想要它做的是在超级层中进行所有合成,然后应用不透明度,然后将结果与其他所有内容重新合成。这称为光栅化;这基本上意味着“请先把我变成一个位图,然后再将我与其他任何东西合成。” shouldRasterize您可以通过在您的 superlayer 上设置来请求这个。

于 2012-07-11T14:51:14.043 回答