首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CALayer蒙版-组合两层

CALayer蒙版-组合两层
EN

Stack Overflow用户
提问于 2012-06-13 22:31:27
回答 1查看 4.6K关注 0票数 2

在我的应用程序中,我有一个视图,我希望它在左侧和右侧有一个小的透明渐变。我可以很容易地创建左渐变或右渐变,但我不知道如何组合它们:

代码语言:javascript
复制
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?或者如何将这两个层都添加到蒙版中?

非常感谢你的回复!

EN

回答 1

Stack Overflow用户

发布于 2014-04-10 21:18:33

诀窍是使用其他人提到的"locations“。下面的代码在顶部和底部执行“淡出”渐变--如果您想让滚动文本在屏幕两端淡出,这一点很有用。下面的位置停止应为0.0 => 0.1从透明淡入白色,然后0.9 => 1.0再次从白色淡入淡出。

代码语言:javascript
复制
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>

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11017138

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档