首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >圆角的UIView CAGradient?

圆角的UIView CAGradient?
EN

Stack Overflow用户
提问于 2011-11-26 02:58:08
回答 5查看 5.6K关注 0票数 4

我有一个圆角和阴影的UIView,实现和工作。但UIView的背景颜色是白色,令人厌烦。所以我想放一个渐变层作为背景。下面的标签,按钮,最重要的是,使它的圆角仍然显示。

代码语言:javascript
运行
复制
CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = subHudView.bounds;
gradient.colors = [NSArray arrayWithObjects:(id)[[UIColor blackColor] CGColor], (id)[[UIColor whiteColor] CGColor], nil];
[subHudView.layer addSublayer:gradient];
subHudView.layer.cornerRadius = 8;
subHudView.layer.masksToBounds = NO;
subHudView.layer.shadowOffset = CGSizeMake(-5, 5);
subHudView.layer.shadowRadius = 8;
subHudView.layer.shadowOpacity = 0.75;

这是我的代码,因为我试图实现它,但梯度层是在视图中已知的一切之上。如何使渐变在所有控件和标签下进行?每一个响应的帮助都将被感谢。

EN

Stack Overflow用户

发布于 2011-11-26 03:06:14

添加到视图中的图层(addSublayer)绘制在视图自己的图层前面,视图的所有绘制都在该图层中进行。你想要的是将渐变绘制到你自己的视图图层中。为此,在您的视图中实现+layerClass,指定您希望视图的图层是渐变视图。

因此,例如(在视图自己的代码中):

代码语言:javascript
运行
复制
+(Class)layerClass {
    return [CAGradientLayer class];
}

-(void)awakeFromNib {
    [super awakeFromNib];
    CAGradientLayer* layer = (CAGradientLayer*)self.layer;
    layer.colors = [NSArray arrayWithObjects:(id)[[UIColor blackColor] CGColor], (id)[[UIColor whiteColor] CGColor], nil];
    layer.cornerRadius = 8;
    layer.masksToBounds = NO;
    layer.shadowOffset = CGSizeMake(-5, 5);
    layer.shadowRadius = 8;
    layer.shadowOpacity = 0.75;
}

然而,如果你随后实现了drawRect:,你当然会抹去你的渐变和圆角。有办法绕过这一点。

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

https://stackoverflow.com/questions/8273229

复制
相关文章

相似问题

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