CAGradientLayer没有完全裁剪

时间:2014-08-27 05:11:43

标签: ios uiview core-graphics

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

Bad这就是它应该是Good的样子。

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

以下是我用于生成视图的代码:

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 个答案:

答案 0 :(得分:0)

您可以为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];

希望这有助于你......:)