205 字
1 分钟
APP View 整体变灰
背景
国内有些日期会要求APP整体置灰
Android
应用ColorMatrix设置饱和度为零
Kotlin
view.setLayerType(View.LAYER_TYPE_HARDWARE, Paint().apply {
colorFilter = ColorMatrixColorFilter(ColorMatrix().apply { setSaturation(0F) })
})
Java
Paint paint = new Paint();
ColorMatrix colorMatrix = new ColorMatrix();
colorMatrix.setSaturation(0);
paint.setColorFilter(new ColorMatrixColorFilter(colorMatrix));
view.setLayerType(View.LAYER_TYPE_HARDWARE, paint);
iOS
添加layer并设置compositingFilter为saturationBlendMode,设置背景颜色为0饱和度颜色,如黑白灰,或者
UIColor(hue: 0, saturation: 0, brightness: 1, alpha: 1)
色相和亮度可以为[0, 1]任意值
Swift
let layer = CALayer()
layer.frame = view.frame
layer.compositingFilter = "saturationBlendMode"
layer.backgroundColor = UIColor.white.cgColor
view.layer.addSublayer(layer)
Objective-C
CALayer *layer = CALayer.new;
layer.frame = view.frame;
layer.compositingFilter = @"saturationBlendMode";
layer.backgroundColor = UIColor.whiteColor.CGColor;
[view.layer addSublayer:layer];
关于SaturationBlendMode:
应用为compositingFilter后会取当前layer的饱和度与其他layer的色相亮度混合,当前layer饱和度为0时也就间接将其他layer的饱和度设置为0
此外,可以用这种方式调整为任意灰度,即 grayscale = 1 - saturation