由于某些原因,需要將App全部頁面或者某些頁面置灰一段時間。下面就介紹下可以實現(xiàn)的其中一種方法。
給App添加一層灰色濾鏡,將App所有的視圖通過濾鏡,都變?yōu)榛疑簿褪窃趙indow或者界面的view上添加這樣一種灰色濾鏡效果,使得整個App或者對應的界面變?yōu)榛疑?/p>
//創(chuàng)建一個View,當作濾鏡使用
@interface UIViewOverLay : UIView
@end
@implementation UIViewOverLay
// .m 里面這個方法是必須的,表示該View不接受、不攔截任何觸摸事件
-(UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event {
return nil;
}
@end
在需要用到的地方使用(只在iOS13及以上系統(tǒng)有效,iOS12部分有效部分無效。無效會導致整個節(jié)目變成全灰,謹慎使用。)
UIViewOverLay *overlay = [[UIViewOverLay alloc] initWithFrame:self.view.bounds];
overlay.translatesAutoresizingMaskIntoConstraints = false;
// 濾鏡的背景顏色,一些鮮艷的顏色設置后會無效
overlay.backgroundColor = [UIColor lightGrayColor];
/* compositingFilter的值有如下: "normalBlendMode","darkenBlendMode","multiplyBlendMode","colorBurnBlendMode",
"lightenBlendMode","screenBlendMode","colorDodgeBlendMode","overlayBlendMode","softLightBlendMode",
"hardLightBlendMode","differenceBlendMode","exclusionBlendMode","hueBlendMode","saturationBlendMode",
"colorBlendMode","luminosityBlendMode", */
overlay.layer.compositingFilter = @"saturationBlendMode";
// 設置圖層在最上面
overlay.layer.zPosition = FLT_MAX;
[self.view addSubview:overlay];
// 如果在整個app上起作用,將這個view添加到window上即可
// UIWindow *window = [[UIApplication sharedApplication].delegate window];
// [window addSubview:overlay];