在一些節(jié)日或者哀悼日,需要App全局變灰(或部分頁(yè)面變灰色),此方法iOS13及以上高版本有效饶套。
原理就是把App頁(yè)面當(dāng)成圖像,另一副偏灰圖像和這個(gè)圖像進(jìn)行疊加運(yùn)算垒探,從而得到新的圖像妓蛮。iOS提供了Core Image濾鏡,這些濾鏡可以設(shè)置在UIView.layer上圾叼。將濾鏡放置到App的最頂層蛤克。
//添加到最頂層視圖,承載濾鏡夷蚊,自身不接收构挤、不攔截任何觸摸事件
@interface UIViewOverLay : UIView
@end
@implementation UIViewOverLay
-(UIView*)hitTest:(CGPoint)point withEvent:(UIEvent*)event{
return nil;
}
@end
//添加到根視圖,全局變灰
UIViewOverLay* overLay = [[UIViewOverLay alloc] initWithFrame:self.window.bounds];
overLay.translatesAutoresizingMaskIntoConstraints = NO;
overLay.backgroundColor = [UIColor lightGrayColor];
overLay.layer.compositingFilter = @"saturationBlendMode";
overLay.layer.zPosition = FLT_MAX;
//要保證overLay在最頂層
[self.window addSubview:overLay];
//如果要部分頁(yè)面變灰惕鼓,就添加到哪個(gè)具體頁(yè)面