Ben*_*tto 1 iphone animation alpha uiview
我正在使用UIView动画在两个视图之间交叉淡入淡出.我注意到以下令人惊讶的事实:
如果我在相同的位置有两个相同的视图,并且我在它们之间设置交叉淡入淡出动画(例如,在同一动画中,将动画从0.0到1.0的动画,同时从1.0到0.0,在同一动画中)在动画中,可见结果在动画过程中略微低于不透明 - 这是一个明显的神器,可以通过在交叉渐变视图后面放置一些其他视图来验证(在动画再次被遮挡之前,它会在动画期间短暂可见).
我希望(使用任何动画时序曲线)完美配对0-> 1和1-> 0 alpha转换总是加起来为1.0的净alpha值,并且在这个测试情况下,我永远不会看到任何明显的变化阿尔法,但我做.
知道这里发生了什么吗?我可以用这个"修复"来解决这个问题,但我最感兴趣的是在混合中我在概念上缺少的东西.
谢谢!
Alphas加起来为1.0的两个堆叠视图不能达到您的预期.它们成倍增加,而不是增加.
我们一次把它当作一大块.这是一个背景,100%闪耀:
bg
|======>
|======>
|======>
|======>
Run Code Online (Sandbox Code Playgroud)
现在让我们在顶部添加另一个视图,50%不透明度.这意味着它可以让50%的背景通过
bg 50%
|===|===>
|===|
|===|===>
|===|
Run Code Online (Sandbox Code Playgroud)
如果我们还有另外50%的观点怎么办?
bg 50% 50%
|===|===|===>
|===| |
|===|===|
|===| |
Run Code Online (Sandbox Code Playgroud)
另外50%的东西都通过了.这意味着仍然会显示50%×50%= 25%的背景图层.
现在,你真的想做什么?您希望新视图显示顺畅,通过旧视图的数量越来越多.因此,只需叠加两个视图,淡出顶部视图,但始终保持底部100%不透明度.否则,您将在动画期间显示一些背景.