淡出 UIView?

Posted

技术标签:

【中文标题】淡出 UIView?【英文标题】:Fade out UIView? 【发布时间】:2011-02-03 23:34:50 【问题描述】:

我在这里有一个 UIView,我想部分淡化它的底部。基本上我希望 alpha 值在我们去的 UIView 上进一步降低。所以 UIView 的顶部是完全可见的,而底部的 alpha 值为 0。

有人对如何做到这一点有任何建议吗?

【问题讨论】:

【参考方案1】:

CALayer 有一个名为mask 的属性,专为实现这种效果而设计。如果将另一个 CALayer 分配给遮罩(没有超层的),则在合成第一个 CALayer 时会使用第二个 CALayer 的 Alpha 通道。

不过要小心,因为使用 mask 属性会严重影响性能。

【讨论】:

那么如何使用遮罩来改变CALayer底部的alpha值呢? 在 Alpha 通道上创建包含渐变的图像。将此图像指定为全新图层的内容属性,其大小与您要淡出的图层相同。然后将这个新图层指定为原始图层的蒙版。 这会淡出这个视图背后的任何东西,不是吗?基本上,我在这里尝试创建的是 UIImageView 下方的反射。我已经有了反射,但我希望它越走越远。而且图像通常是透明的 png,因此添加渐变意味着背景也会逐渐消失。 向图层添加蒙版只会影响该图层及其子图层。它不会影响它下面的任何东西。

以上是关于淡出 UIView?的主要内容,如果未能解决你的问题,请参考以下文章

淡出/淡入 UiView 动画

使用子视图按钮淡化 UIView

如何中断 UIView 动画

+[UIView transitionFromView:toView:...] 有多个视图

UIView 过渡动画

难以链接两个 UIView 动画