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图层蒙版裁剪/移动视图。我究竟做错了什么?