前言
前一段时间, 各大互联网应用首页置灰已经接踵而至。我司看到了, 也需要进行借鉴, 由于开发再上线也就是几天之后了, 上线就没有意义, 索性就搁置了, 目前自己有时间, 拿出来研究研究,
首先是各种百度, 找找轮子, 并记录一下, 效果如下:
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