我有一个CAGradientLayer我用作阴影。它从60%不透明度变为清晰,从左到右。在渐变的边缘,它似乎与它下面的层混合并使该层变亮:
在阴影的最末端有一个像素宽的“发光”,它在那里消失得清晰。它似乎使阴影背后的阴影照片更亮。这是一个特写:
这是产生阴影的代码:
CAGradientLayer *layer = [CAGradientLayer layer];
layer.frame = CGRectMake(sideBar.frame.size.width, 0, 7, sideBar.frame.size.height);
layer.colors = [NSArray arrayWithObjects:
(id)[[[UIColor blackColor] colorWithAlphaComponent:0.6f] CGColor],
(id)[[UIColor clearColor] CGColor],
nil];
[layer setStartPoint:CGPointMake(0, 0.5)];
[layer setEndPoint:CGPointMake(1, 0.5)];
[sideBar.layer insertSublayer:layer atIndex:0];
sideBar.layer.masksToBounds = NO;
关于如何摆脱它的任何想法?
答案 0 :(得分:22)
你的眼睛在欺骗你。渐变边缘的强度没有增加。您可以检查 - 我将图像缩小到云区域的1px高度并查看颜色值。
然而,你看到一条亮线的原因是阴影看起来不像那样。您期望看到的透明度轮廓将更接近高斯而不是直线(这是线性渐变的作用)。
我建议添加一些额外的点来缓和渐变到透明区域。也许是这样的事情
layer.colors = [NSArray arrayWithObjects:
(id)[[[UIColor blackColor] colorWithAlphaComponent:0.6f] CGColor],
(id)[[[UIColor blackColor] colorWithAlphaComponent:0.3f] CGColor],
(id)[[[UIColor blackColor] colorWithAlphaComponent:0.1f] CGColor],
(id)[[UIColor clearColor] CGColor],
nil];
您可能需要增加渐变的大小以适应这种额外的混合。