iOS一键置灰几个方案

463 阅读1分钟

前言

前一段时间, 各大互联网应用首页置灰已经接踵而至。我司看到了, 也需要进行借鉴, 由于开发再上线也就是几天之后了, 上线就没有意义, 索性就搁置了, 目前自己有时间, 拿出来研究研究,

首先是各种百度, 找找轮子, 并记录一下, 效果如下:

IMG_1D0D711BFB19-1.jpeg

1. layer.compositingFilter

使用 CALayer 自带的过滤器添加灰阶滤镜,可以直接加在 VC 或者 window,实现全站灰阶(适合整个页面或局部灰阶。该方案只支持 iOS13 及以上)


....

# 在设置为 root 之后

xxx.window.rootViewController = VC;

[self addGrayLayer];

....

- (void)addGrayLayer {

//只适用于 iOS 13 之后的, 12的可以进行忽略了

UIView * childView = [[UIView alloc] initWithFrame:appWindowBounds];

childView.backgroundColor = [UIColor lightGrayColor];

[childView setUserInteractionEnabled:NO];

childView.layer.compositingFilter = @"saturationBlendMode";

[appWindow addSubview:childView];

[childView bringToFront];

}

2. 同样是添加 layer


//获取RGBA颜色数值

CGFloat r,g,b,a;

[[UIColor lightGrayColor] getRed:&r green:&g blue:&b alpha:&a];

//创建滤镜

id cls = NSClassFromString(@"CAFilter");

id filter = [cls filterWithName:@"colorMonochrome"];

//设置滤镜参数

[filter setValue:@[@(r),@(g),@(b),@(a)] forKey:@"inputColor"];

[filter setValue:@(0) forKey:@"inputBias"];

[filter setValue:@(1) forKey:@"inputAmount"];

//设置给window

//找window第二种方法

UIWindow * window=[UIApplication sharedApplication].keyWindow;

window.layer.filters = [NSArray arrayWithObject:filter];

3. 方案3 三方库: IMYAppGrayStyle App一键全局变灰

github地址: github.com/li6185377/I…

使用如下


pod 'IMYAppGrayStyle'

// 开启全局变灰

[IMYAppGrayStyle open];

// 关闭全局变灰

[IMYAppGrayStyle close];

// 目标view 覆盖灰色模式

[IMYAppGrayStyle addToView:targetView];

// 目标view 移除灰色模式

[IMYAppGrayStyle removeFromView:targetView];

4. 单独图片等的, 有点麻烦, 就直接上面3个能满足了, 以后有需要再去弄的吧

欢迎补充


End