我正在使用CAGradientLayer作为我的图像的图层。我正在使用下面的代码:
UIImage *image = [UIImage imageNamed:@"perfect.jpg"];
[testImage setImage:image];
CAGradientLayer *myLayer = [CAGradientLayer layer];
myLayer.anchorPoint = CGPointZero;
//starts in bottom left
myLayer.startPoint = CGPointMake(0.0f,0.5f);
//ends in top right
myLayer.endPoint = CGPointMake(0.5f, 0.0f);
UIColor *outerColor = [UIColor colorWithWhite:1.0 alpha:0.0];
UIColor *innerColor = [UIColor colorWithWhite:1.0 alpha:1.0];
//an array of colors that dictatates the gradient(s)
myLayer.colors = @[(id)outerColor.CGColor, (id)outerColor.CGColor, (id)innerColor.CGColor, (id)innerColor.CGColor];
//these are percentage points along the line defined by our startPoint and endPoint and correspond to our colors array. The gradient will shift between the colors between these percentage points.
myLayer.locations = @[@0.0, @0.15, @0.5, @1.0f];
myLayer.bounds = CGRectMake(0, 0, CGRectGetWidth(testImage.bounds), CGRectGetHeight(testImage.bounds));
testImage.layer.mask = myLayer;
[self.view addSubview:testImage];但渐变只适用于我的图像的侧面。我想要的是将渐变应用为圆形或径向渐变。我该怎么做呢?
发布于 2014-05-06 20:46:11
您可以使用名称为CIVignette的CIFilter来获得径向渐变。尝试使用下面的代码。
UIImage *image = [UIImage imageNamed:@"perfect.jpg"];
CIFilter *vignette = [CIFilter filterWithName:@"CIVignette"];
[vignette setValue:image forKey:kCIInputImageKey];
[vignette setValue:@(1) forKey:@"inputIntensity"];
[vignette setValue:@(30) forKey:@"inputRadius"];
CIImage *outputImage = [vignette outputImage];
CGImageRef cgimg = [ [CIContext contextWithOptions:nil] createCGImage:outputImage
fromRect:[outputImage extent]];
UIImage *newImage = [UIImage imageWithCGImage:cgimg];
testImage.image = newImage;
[self.view addSubview:testImage];有关更多信息,请访问this tutorial.
https://stackoverflow.com/questions/23494063
复制相似问题