0%

将背景颜色 A 和叠加颜色 B 混合,得到颜色 C,可通过以下公式计算(见 https://en.wikipedia.org/wiki/Alpha_compositing

举个例子,css 里指定使用 groove 等自动变双色的 border 时,颜色变深的逻辑是由浏览器自行实现的,而在 WebKit 里的实现方式是在原色的前面叠加 000 33% 而成。

阅读全文 »

DTCoreText 是一款 Github 上的开源库,可用于摆脱低性能的 WebView 却又以 WebView 的方式来展示 HTML。整体逻辑包含以下几个部分:

  1. 解析HTML标签、CSS,构建DOM树,创建出 NSAttributedString 

  2. 将 NSAttributedString 拆分、构建成每一行的 CTLine、继而拆分到 CTRun 

  3. 绘制每一个 CTRun
    阅读全文 »

零、前言

VAP(Video Animation Player)是由腾讯的企鹅电竞团队开发的一套用于播放酷炫动画的实现方案。大概在 2019 年中,VAP 还未在 Github 正式对外开源时,因为项目需要,我开始接触到 VAP。也见证了 VAP 从只能常规地去播动画,到实现了融合特效,再到在 Github 开源的过程。

在最初 VAP 还未完善时,我们也与电竞的同事一起发现、解决了一些 bug;同时在我们自己项目使用的过程中,偶尔也有对 VAP 进行二次开发以适应我们自己的需要。最终这也使我对 VAP 的源码较为了解,让我获益匪浅。

关于 VAP 的原理,在 Github 以及 KM 中都已经有较多讲解的文章了,但目前还没有源码级别的解读,而我作为 VAP 的第一批开发者(算是吧),也就尝试写一篇文章来记录一下。

阅读全文 »

一、背景

苹果在 WWDC 2015 上展示了一项多任务能力,在播放视频时即使用户将 App 切到后台,画面也能继续以画中画的形式在小窗口中播放。此能力最早在 iOS 9 上对 iPad 开放,而如今苹果将这能力扩展到了 iPhone 上,只要升级到 iOS 14 即具备此能力。

阅读全文 »

随着版本不断迭代,各种新的业务代码不断被加入,IPA 包的体积也在不断增大。为了方便检测出两个版本之间安装包体积增大的原因,这里写了个小工具。

阅读全文 »

在工作中偶尔会听到 mmap 这个词。首先从出处上来说,mmap()是在 <sys/mman.h> 中定义的一个函数,此函数的作用是创建一个新的 虚拟内存 区域,并将指定的对象映射到此区域。因此,一直以来在工作中聊到的 mmap 其实就是通过 内存映射 的机制来进行文件操作。

阅读全文 »

在刚过去的微信公开课 PRO 版里,我有幸被腾讯选中,在现场听了张小龙大大对小程序的讲解与展望。思考和总结一番之后,我纯粹想表达一下自己对小程序 应用场景 的一些想法。

阅读全文 »

趁着元旦假期,花了一天的时间了解了一下 iOS 和 Mac App 的逆向技术。第一次涉足逆向工程,原本只是打算了解一下逆向的知识,然后发现原来还可以利用逆向做点有趣的事,于是在完成之后记录一下下~

阅读全文 »