美文网首页
iOS - App全局灰色调

iOS - App全局灰色调

作者: dalu | 来源:发表于2022-11-30 17:14 被阅读0次

    在一些节日或者哀悼日,需要App全局变灰(或部分页面变灰色),此方法iOS13及以上高版本有效。
    原理就是把App页面当成图像,另一副偏灰图像和这个图像进行叠加运算,从而得到新的图像。iOS提供了Core Image滤镜,这些滤镜可以设置在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];
    
    //如果要部分页面变灰,就添加到哪个具体页面
    

    相关文章

      网友评论

          本文标题:iOS - App全局灰色调

          本文链接:https://www.haomeiwen.com/subject/cdhsfdtx.html