Oct 9
用安卓手机的时候注意到不少内容app可以阻止用户截屏,通过为当前windows设置FLAG_SECURE或者一些其他的trick手段,用户就无法截屏了。
iOS目前还没有提供类似的功能,不过注意到系统有提供类似的组件:UITextField在设置为secureTextEntry即密码模式后,整个UITextField的文本区在截屏时是完全截不进去的,估计是考虑到点点点也能暴露用户密码位数的缘故。
Sep 2
上次尝试了空间基础阴影/投影绘制https://lrdcq.com/me/read.php/115.htm的实现尝试,没有提到一个附加课题,对于如那个demo中那样的纯色空间绘制,除去阴影现在更加流行的渲染辅助方式是ACG风格的描边效果。

什么叫ACG风格?可以参考日本画师ideolo的图:
Aug 18
上一次编写了二次元图像的光照/阴影绘制(https://lrdcq.com/me/read.php/110.htm)不过其实缺少一大块即投影的绘制。毕竟上次本质上用cpu模拟了半兰伯特光照模型,从js实际执行的帧率上看,已经非常极限了。而最简单的投影绘制,即ShadowMap方案,本身充分利用了GPU管线的基础上依赖是大家用得慎之又慎的东西,Canvas实现起来自然非常酸爽了。整体效果如下(4x模糊有惊喜):

Demo(https://lrdcq.com/test/shadowmap-canvas)内嵌:
Aug 8
参考基础demo食用:https://lrdcq.com/test/2dnormal-canvas,纯源码网页,另存下来修改更佳。
我们在屏幕上看到的所有图像说到底都是二维图像。在二维图像上表现3d的效果有几种主要方式。一种方式是通过线条来描绘出空间感。另一个种方式就是通过色差来表现光照/阴影了来描绘出层次感了
Jul 18
我们通过ruby做自动化与CI流程时,往往会用到xcodeproj即https://github.com/CocoaPods/Xcodeproj这个库,毕竟半个iOS圈都在用它做自动化CI,因此我们考虑通过脚本为项目插入代码与资源时,也发现xcodeproj即可满足诉求。本篇小记一下通过xcodeproj插入代码与资源,并且在构建过程做手脚。

插入代码
Jul 15
Fastlane的衍生工具中,有一个叫Spaceship的ruby工具库https://spaceship.airforce/,可以帮助我们用脚本访问Apple Developer Center与App Store Connect API。当然,苹果自己的api已经足够了https://developer.apple.com/documentation/appstoreconnectapi/,当时还是有一些我们在网页上可以直接操作的事儿用api调用贼麻烦。Spaceship是结合api和苹果网页的请求api模拟操作一起使用的,那基本上我们在网页上能干的事情我们都可以做到了。是甚爽。

API:https://www.rubydoc.info/gems/spaceship/Spaceship 基本上是万能的。
Jul 7
偶尔由于一些很奇怪,很没道理,很hack的理由,我们的程序需要在运行时知道这个函数是从哪儿,或者是谁调用的,并且针对这个情况做一些特殊处理。作为iOS开发,我们的程序的方法实现都是货真价实的机器码,在尽量不破坏程序源码甚至闭源的情况下,我们能做到这个事儿吗?有个小技巧可以做:

核心工具

实现这个事情的核心工具是__builtin_return_address(level)方法(https://gcc.gnu.org/onlinedocs/gcc/Return-Address.html)。
Jun 15
在iOS持续构建过程中,我们经常会涉及到读取mobileprovision信息的内容这一过程。我们都知道mobileprovision中包含了一个plist,包含了这个证书对应的大量信息,但是mobileprovision本身不是plist,因此整件事儿的核心就是把mobileprovision中的plist导出出来。网上能直接搜到的方案是:
security cms -D -i path_to_mobileprovision
#在ruby中即
plist = `security cms -D -i #{path_to_mobileprovision}`
plist_content = Plist.parse_xml(plist)