【问题标题】:CAGradientLayer not fully clippingCAGradientLayer 没有完全裁剪
【发布时间】: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];

【问题讨论】:

    标签: ios uiview core-graphics


    【解决方案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];
    

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

    【讨论】:

      猜你喜欢
      • 2015-08-18
      • 2020-12-25
      • 2013-08-14
      • 2018-07-17
      • 2016-07-20
      • 1970-01-01
      • 1970-01-01
      • 2021-02-21
      • 2016-06-10
      相关资源
      最近更新 更多