App實現(xiàn)哀悼模式

引言

最近開發(fā)哀悼模式的需求以應(yīng)對某些特殊場景,針對兩端的思想思路總結(jié)如下

解決方案

iOS:

思路:在頁面上添加混合飽和過濾模式的view,使最終的顏色為灰色
注意:iOS13有效,iOS12部分有效部分無效。在業(yè)務(wù)側(cè)使用時記得增加版本判斷

UIView *overlay = [[UIView alloc] initWithFrame:self.view.bounds];
// 濾鏡的背景顏色,一些鮮艷的顏色設(shè)置后會無效
overlay.backgroundColor = [UIColor lightGrayColor];
overlay.userInteractionEnabled = false;
// 設(shè)置符合過濾,混合飽和模式
overlay.layer.compositingFilter = @"saturationBlendMode"; // compositingFilter的值有如下: normalBlendMode、darkenBlendMode、multiplyBlendMode、colorBurnBlendMode、lightenBlendMode、screenBlendMode、colorDodgeBlendMode、overlayBlendMode、softLightBlendMode、hardLightBlendMode、differenceBlendMode、exclusionBlendMode、hueBlendMode、saturationBlendMode、colorBlendMode、luminosityBlendMode
// 設(shè)置圖層在最上面
overlay.layer.zPosition = FLT_MAX;
[self.view addSubview:overlay];
// 如果在整個app上起作用,將這個view添加到window上即可
UIWindow *window = [[UIApplication sharedApplication].delegate window];
[window addSubview:overlay];

Android:

思路:在Activity的頂層View設(shè)置置灰實現(xiàn)全局置灰效果View

View view  = activity.getWindow().getDecorView();
Paint paint = new Paint();
ColorMatrix cm = new ColorMatrix();
cm.setStaturation(0);
paint.setColorFilter(new ColorMatrixColorFilter(cm));
view.setLayerType(View.LAYER_TYPE_HARDWARE, paint);

Harmony:

待補充

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 由于某些原因,需要將App全部頁面或者某些頁面置灰一段時間。下面就介紹下可以實現(xiàn)的幾種方法。 方案一: 給App添...
    丶天空藍丶閱讀 3,512評論 0 5
  • 前陣子清明節(jié)為哀悼疫情中去世去的同胞和戰(zhàn)士們,全國娛樂設(shè)施停業(yè)一天,各大廠商的 app 也都啟動了灰度色盲模式的 ...
    碼農(nóng)淏閱讀 8,490評論 35 13
  • 因為最近做哀掉日App黑白化的需求,需要依據(jù)下發(fā)的配置對APP的首頁或者整體進行置為灰色,因此這里針對方案做一下總...
    林大鵬閱讀 7,103評論 0 36
  • 實現(xiàn)原理:用添加了半透明灰色濾鏡的View,蓋在想要置灰的界面上。 自定義View 添加View到界面。需要注意,...
    Accepted_閱讀 1,133評論 1 4
  • 由于某些原因,需要將App全部頁面或者某些頁面置灰一段時間。下面就介紹下可以實現(xiàn)的其中一種方法。 給App添加一層...
    樊二哈閱讀 862評論 0 1

友情鏈接更多精彩內(nèi)容