iOS 实现app黑白模式

iOS 实现app黑白模式,第1张

2020的是被疫情覆盖的一年,在国内疫情得到控制之后,全国在44日举行了疫情哀悼纪念,而互联网的产物在那天也做出了很多默契的配合,比如说很多网站暂停运营一天,很多app网页的UI变成了黑白模式,那天我刷了一整天的手机看到的画面全是黑白的,第二天又调整为正常了作为一个iOS开发,我思考如何才能更好的达到这种黑白与彩色之前的切换,想了以下几种思路:

通过查询资料,未找到方式1相关的api,iOS设备自身有个功能叫 颜色反转 ,有兴趣的可以去打开该功能看看,我在想这其实和实现黑白模式的原理是一样的,但是苹果未开放相关api

方式2看起来可行,我觉得一些app等在那天就是采用了这样的方式来实现的黑白化,因为app里的内容不是说有的都改成了黑白,只有部分或者页面改成了黑白模式,但是工作量有点太大了,而且不够灵活

方式3我认为是比较可靠可行的,于是我按照方式3的思路实现了UIColor及的黑白化

首先贴上一张没有开启黑白化的page原图,可以看到,color都是正常的

UIColor方法捕捉

我们注意以下这3处的颜色变化

在该方法中我们可以捕获到系统预设的systemColor,如果想知道到底有哪些systemColor,可以通过 [UIColor systemBlueColor]; 点击前往分类 @interface UIColor (UIColorSystemColors) 中,这里系统提供了许多预设的systemColor,这些方法与 initWithName:colorsByThemeKey: 中的name一致,所以我们拦截了所有的systemBlueColor方法,直接采用BlueColor返回,而BlueColor我们在前面也做过了拦截处理,这样就达到了统一处理,如果还有其他name类型的systemColor,可以采取同样的处理方式,或者我们可以将需要捕获的systemColor的name通过服务端下发,同时下发对应的r、g、b、a值,然后调用 [UIColor colorWithRed:r green:g blue:b alpha:a] 这样更加灵活

通常情况下,我们的app里的控件都会采用UIImageView,这里我只是正对 UIImageView 进行了 setImage 的hook,如果有其他情况,需要自己处理,掌握了此 黑白化 的技巧,其他的处理方式也差不多

的黑白化,我采用的是 CIFilter 滤镜实现,我们看下 黑白 和 单色 两种滤镜

效果差不多,但是在色彩丰富的上,个人认为Mono会比Noir效果好看点

至此,我们可以通过服务器来灵活配置关键参数 monochromatic ,开启或者关闭 黑白化 功能,实现app基本全面黑白化
demo参考

当然是网络问题了,这个是日本服务器,因为黑白官方没有中文版,在中国没服务器的,如果日本本地人数过多的话,会封掉中国部份ip地址,因为日本官方也知道中国百分之九十全是烧录卡,不是正版,就上不去了。你要上的话尽量在不是休假日的时间或半夜吧,毕竟日本和中国时差也不多。

可能按住黑色色彩设置按钮,恢复方法:Ctrl+“微软键”+C键

图例:

:

相对于普通电脑来说,稳定性、安全性、性能等方面都要求更高,因此在CPU、芯片组、内存、磁盘系统、网络等硬件和普通电脑有所不同。服务器是网络的节点,存储、处理网络上80%的数据、信息,在网络中起到举足轻重的作用。

因而服务器与微机在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面存在差异很大。服务器主要有网络服务器(DNS、DHCP)、打印服务器、终端服务器、磁盘服务器、邮件服务器、文件服务器等。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/13439649.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-08-06
下一篇 2023-08-06

发表评论

登录后才能评论

评论列表(0条)

保存