添加水印,这个需求要求调研时,因为是新的技术点,查阅了一些资料。资料中统统都说:获取界面的rgb值,将需要加密的信息翻译成二进制,通过位运算,添加到每个rgb值的二进制末尾实现。解码时线取界面的rgb二进制值,通过位运算,得出加密信息的二进制即可。
网上给了一些获得界面rgb的方法,我按照其方法获得,打印输出观察。无法分辨rgb的的开始和结束位置,并且大都相同。我将我查找的结果和疑问和同事讨论,当时也是无解。继续在网上找了两三天,无果,就放弃了。
在忙着开发其他需求时,添加水印的难题,被同事解决了。现记录于此。
方法是,在window的layer(选用window的layer,只需添加一次,每个界面都能有水印显示。)上,添加一个水印layer(CATextLayer 对象),水印layer有string属性,根据水印layer的宽高,拼接多个水印信息,设置背景色backgroundColor透明,调节文字的前景色foregroundColor,使文字微微可见,在设置wrapped = yes,string 大于layer的宽度,自动换行。
此方法,如此简单微妙,赞!