如何动态更换 iOS App 图标

在 iOS 10.3 之前,App 图标是固定,只能通过发新版来更新。但现在有些 App 可以让用户自己选取图标,并及时生效。这是因为 10.3 里引入了一个新的 API,它允许在 App 运行的时候,通过代码为 app 更换 icon。 快速上手 虽然提供了更换的功能,但更换的 icon 是有限制的。它需要开发者提前预置在工程里,并做好相应配置。更改 icon 的时候,只能在有限的选项中进行选择。 具体方法很简单: 配置 info.plist 文件,添加对应的 alternate icons 的信息。 调用 UIApplication.setAlternateIconName...

文本对齐,如何像素般精确还原设计稿

问题 在工程师实现设计稿的时候,文本框的对齐是一个经常遇到且棘手的问题。明明已经遵照设计师的标注实现,但结果却与设计稿有很大差异。 「label 为什么有这么大的上下边距呢?」 「行距是 1.2 倍但是效果完全不一样!」 这时候只能靠手工一点一点试,而且由于 app 开发不能像 web 一样及时生效,很浪费时间,且不够精确。 我们的目标是: 只需按照标注 coding,即可像素般准确实现设计稿中的文字对齐与行间距样式。为了解决这个问题,我们需要先明确一些概念。 文本的度量 文字的排版不只是把方块字依次排列起来即可。对于拉丁字母,f 与 g 以什么方式上下对齐?为...

一个隐藏的动画曲线

摘要 本文从代码的角度探讨了 iOS 键盘弹出的动画曲线的一些特点,并给出了精确模拟这个动画曲线的方法。同时也介绍了如何逐帧分解 iOS 动画,以及如何通过数据集拟合 Bezeir 曲线的控制点(Control Point)。 一个隐藏的参数 好看的曲线 图中第一个动画有一个很好看的动画曲线,看起来很有灵性。这条动画曲线不是 iOS 中默认的那四种,也不是其他常见的曲线。它是 iOS 中一个隐藏的动画参数,没有囊括在 UIViewAnimationCurve 中。 这条曲线并不陌生,它被键盘弹出动画所采用。在实现输入框与键盘同步弹出的场景里,我们会监听键盘弹出的通知。系统在...

Run Mario!写一个越狱插件

摘要 本文记叙了制作一个越狱插件的过程,它可以解除 SuperMarioRun 在越狱手机上的限制。(SuperMarioRun 是任天堂在 iOS 平台上推出的一款游戏)。插件可以通过 Cydia 安装(搜索 RunMario)。 故事 春节假期玩了很久的 SuperMarioRun,当得到了前三关的全部九个金币后,终于下决心买了后面的世界,玩得津津有味。 前几日发现 iOS 10.2 可以越狱了,作为一个开发者,迫不及待地越狱了自己的手机。越狱后打开 Mario,竟然发现了启动闪退(启动画面之后就立刻退出了)。不禁职业性地感叹,作为一个大厂,产品就这个质量?? 重试了几...

我们为什么要使用 Swift

Overview Swift 是苹果 2014 年推出的语言,首先应用于 mac 和 iOS 平台的开发,并且于 2015 年底开源,推出了 Linux 版本。它集合了许多编程语言最新的研究成果1,并且借鉴了 Objective-C, Rust, Haskell, Ruby, Python, C#, CLU 等语言2。 Swift 是一个多范式(Multi-paradigm)的编程语言。它基本涵盖了函数式编程(Functional Programming)语言和面向对象编程语言的所有特性。可以进行函数式编程,或者 Protocol-Oriented Programming 等,而不...