1574306084949710.png
以下代码是解决设置圆角/阴影离屏渲染的关键
self.contentView.layer.shadowPath = [UIBezierPath bezierPathWithRect:self.contentView.bounds].CGPath;
// 设置x向右偏移,y向下偏移
self.contentView.layer.shadowOffset = CGSizeMake(2, 3);
// 设置阴影的颜色
self.contentView.layer.shadowColor = [UIColor lightGrayColor].CGColor;
// 设置阴影的透明图
self.contentView.layer.shadowOpacity = 0.5;
// 设置阴影的圆角
self.contentView.layer.shadowRadius = 5.f;
layer 里与阴影有关的设置与 Sketch 里阴影参数的对应关系是:
shadowPath ~> 阴影的范围
shadowColor ~> 阴影的颜色
shadowOpacity ~> 阴影的透明度
shadowOffset ~> X 和 Y
shadowRadius ~> 阴影的模糊
D337BFF2-4585-489B-BA47-EE282A9A16FE.png
图像模糊处理
CIContext *context = [CIContext contextWithOptions:nil];
CIImage *inputImage = [[CIImage alloc] initWithImage:image];
// create gaussian blur filter
CIFilter *filter = [CIFilter filterWithName:@"CIGaussianBlur"];
[filter setValue:inputImage forKey:kCIInputImageKey];
[filter setValue:[NSNumber numberWithFloat:3.0] forKey:@"inputRadius"];
// blur image
CIImage *result = [filter valueForKey:kCIOutputImageKey];
CGImageRef cgImage = [context createCGImage:result fromRect:[result extent]];
UIImage *image = [UIImage imageWithCGImage:cgImage];
CGImageRelease(cgImage);
// 设置背景图,创建一个imageView.image 来接收模糊视图image
self.backgroundIcon.image = image;