【发布时间】:2011-11-26 10:08:50
【问题描述】:
我基本上希望 UITableView 实例中每一层的不透明度在前 10 个左右的像素处“淡出”。
有没有办法淡出 CALayer(或更一般地说,UIView)的不透明度?它在效果上类似于使用 CAGradientLayer 添加阴影,但不是用另一个覆盖 table view 的其他层,而是对它们应用过滤器以根据渐变使它们透明。
【问题讨论】:
标签: objective-c ios uikit calayer
我基本上希望 UITableView 实例中每一层的不透明度在前 10 个左右的像素处“淡出”。
有没有办法淡出 CALayer(或更一般地说,UIView)的不透明度?它在效果上类似于使用 CAGradientLayer 添加阴影,但不是用另一个覆盖 table view 的其他层,而是对它们应用过滤器以根据渐变使它们透明。
【问题讨论】:
标签: objective-c ios uikit calayer
是的,通过使用CALayer 的mask 属性,但效率相当低。通常,这种效果是通过在视图顶部覆盖从透明到背景颜色的渐变来完成的(但这只有在您知道背景是什么时才有效)。
【讨论】:
mask 相对昂贵,但是当您需要它时,它往往可以胜任。如果您遇到性能问题并且没有为任何内容设置动画,您可能需要查看 shouldRasterize 标志。这可以帮助静态内容在某些情况下表现得更好。但是,当然,如果您要制作动画,那就不好了。