先上效果:将两张图片融合。
两张原图:
融合之后的图:
原理如下:将两张图重合,同时,使得两张图重合部分透明度渐变。
其中透明度渐变的实现就是设置UIImageView的layer的mask为一个CAGradientLayer。
核心代码:
CAGradientLayer* maskLayer = CAGradientLayer.new;
maskLayer.frame = self.bounds;
self.layer.mask = maskLayer;
maskLayer.startPoint = CGPointMake(0, 0);
maskLayer.endPoint = CGPointMake(0, 1);
UIColor* colorAlpha0 = [[UIColor clearColor] colorWithAlphaComponent:0];
UIColor* colorAlpha05 = [[UIColor clearColor] colorWithAlphaComponent:0.5];
UIColor* colorAlpha1 = [[UIColor clearColor] colorWithAlphaComponent:1];
NSArray* colors,*locations;
colors = @[(__bridge id)colorAlpha1.CGColor,
(__bridge id)colorAlpha1.CGColor,(__bridge id)colorAlpha05.CGColor];
locations = @[@(0),@(1 - offest/relativeHeight), @(1)];
//设置颜色数组
maskLayer.colors = colors;
//设置颜色分割点(区域渐变范围:0-1)
maskLayer.locations = locations;
上下两个UIImageView的重叠区域都需要设置CAGradientLayer。