CAGradientLayer 没有完全裁剪

Posted

技术标签:

【中文标题】CAGradientLayer 没有完全裁剪【英文标题】:CAGradientLayer not fully clipping 【发布时间】:2014-08-27 05:11:43 【问题描述】:

我创建了一个UIView 并添加了一个CAGradientLayer 来创建一个带有白色边框的渐变点。到目前为止我所拥有的作品,但似乎渐变并没有完全剪辑,有些仍然显示,这就是我的意思:

这应该是 的样子。

注意白色边框周围没有蓝色轮廓^。

这是我用来生成视图的代码:

UIView *dot = [[UIView alloc] initWithFrame:CGRectMake(0, 0, width, width)];
dot.backgroundColor = [UIColor clearColor];
dot.clipsToBounds = YES;

CAGradientLayer *gradient = [CAGradientLayer layer];
gradient.frame = dot.bounds;
gradient.colors = @[(id)UIColorFromRGB(0x03a69b).CGColor, (id)UIColorFromRGB(0x039976).CGColor];
gradient.borderColor = [UIColor whiteColor].CGColor;
gradient.borderWidth = 4.0;
gradient.cornerRadius = width/2.;

[dot.layer insertSublayer:gradient atIndex:0];

【问题讨论】:

【参考方案1】:

你可以为dot视图设置图层属性,而不是设置为gradient 例如

UIView *dot = [[UIView alloc] initWithFrame:CGRectMake(60, 100, 100, 100)];
dot.backgroundColor = [UIColor whiteColor];//clearcolor
dot.layer.borderColor = [UIColor whiteColor].CGColor;
dot.layer.masksToBounds = YES;
dot.layer.cornerRadius = dot.bounds.size.width/2.;
dot.layer.borderWidth = 4.0f;

 CAGradientLayer *gradient = [CAGradientLayer layer];
 gradient.frame = dot.bounds;
 gradient.colors = [NSArray arrayWithObjects:(id)[UIColor redColor].CGColor,(id)   [UIColor greenColor].CGColor, nil];
//  gradient.borderColor = [UIColor whiteColor].CGColor;
//  gradient.borderWidth =5;
//  gradient.cornerRadius = dot.bounds.size.width/2.;
//  gradient.masksToBounds = YES;
    [dot.layer insertSublayer:gradient atIndex:0];

    [self.view addSubview:dot];

希望这可以帮助你.. :)

【讨论】:

以上是关于CAGradientLayer 没有完全裁剪的主要内容,如果未能解决你的问题,请参考以下文章

Swift mapview图层蒙版裁剪/移动视图。我究竟做错了什么?

如何添加完全填充视图框架的渐变层

SQL语句update ... ... from ......

CAGradientLayer 没有正确绘制渐变

CAGradientLayer 没有从视图中删除自我

CAGradientLayer:其他 UIObjects 没有出现