iOS App頁面置灰

由于某些原因,需要將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];
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 由于某些原因,需要將App全部頁面或者某些頁面置灰一段時間。下面就介紹下可以實現(xiàn)的幾種方法。 方案一: 給App添...
    丶天空藍丶閱讀 3,260評論 0 5
  • 因為最近做哀掉日App黑白化的需求,需要依據(jù)下發(fā)的配置對APP的首頁或者整體進行置為灰色,因此這里針對方案做一下總...
    林大鵬閱讀 6,804評論 0 36
  • iOS本身在設置里面是有色盲模式的,打開后效果極佳,可以說是最好的灰度處理了。但是蘋果平?jīng)]有放開這個API,我們也...
    香橙柚子閱讀 3,700評論 0 16
  • 本文主要講述頁面布局樣式方面涉及的知識點,更全面的對CSS相應的技術進行歸類、整理、說明,沒有特別詳細的技術要點說...
    Joel_zh閱讀 889評論 0 1
  • 實現(xiàn)原理:用添加了半透明灰色濾鏡的View,蓋在想要置灰的界面上。 自定義View 添加View到界面。需要注意,...
    Accepted_閱讀 1,042評論 1 4