在我的应用程序中,我有一个视图,我希望它在左侧和右侧有一个小的透明渐变。我可以很容易地创建左渐变或右渐变,但我不知道如何组合它们:
CAGradientLayer *rightLayer = [CAGradientLayer layer];
rightLayer.frame = self.bounds;
rightLayer.colors = [NSArray arrayWithObjects:(id)[UIColor whiteColor].CGColor, (id)[UIColor clearColor].CGColor, nil];
rightLayer.startPoint = CGPointMake(0.8f, 1.0f);
rightLayer.endPoint = CGPointMake(1.0f, 1.0f);
CAGradientLayer *leftLayer = [CAGradientLayer layer];
leftLayer.frame = self.bounds;
leftLayer.colors = [NSArray arrayWithObjects:(id)[UIColor clearColor].CGColor,(id)[UIColor whiteColor].CGColor, nil];
leftLayer.startPoint = CGPointMake(0.0f, 1.0f);
leftLayer.endPoint = CGPointMake(0.2f, 1.0f);
self.layer.mask = leftLayer;正如你所看到的,问题是我必须只分配一个图层给遮罩,我想让它有两个图层。如何合并leftLayer和rightLayer?或者如何将这两个层都添加到蒙版中?
非常感谢你的回复!
发布于 2014-04-10 21:18:33
诀窍是使用其他人提到的"locations“。下面的代码在顶部和底部执行“淡出”渐变--如果您想让滚动文本在屏幕两端淡出,这一点很有用。下面的位置停止应为0.0 => 0.1从透明淡入白色,然后0.9 => 1.0再次从白色淡入淡出。
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = self.bounds;
gradient.colors = @[(id)[[UIColor clearColor] CGColor], (id)[[UIColor whiteColor] CGColor], (id)[[UIColor whiteColor] CGColor], (id)[[UIColor clearColor] CGColor]];
gradient.startPoint = CGPointMake(0.5, 0.0);
gradient.endPoint = CGPointMake(0.5, 1.0);
gradient.locations = @[@0.0, @0.1, @0.9, @1.0];
[self.layer setMask:gradient];记住在您的文件中包含#import <QuartzCore/QuartzCore.h>。
https://stackoverflow.com/questions/11017138
复制相似问题