iOS 系统自带的 UIActionSheet 无法满足开发中高度个性化的 UI 风格和代码风格,所以我决定自己动手丰衣足食,于是 TBActionSheet 诞生了:

Github:https://github.com/yulingtianxia/TBActionSheet

TBActionSheet 不仅还原了 UIActionSheet 的几乎所有功能和 API,还在此基础上支持如下功能:

  1. block 语法
  2. 插入自定义的 Header 视图
  3. 自定义字体、颜色、尺寸、圆角等
  4. 将毛玻璃效果支持到了 iOS7,且可以定义颜色
  5. 支持 Cocoapods 和 Carthage
  6. 支持在 Title 下面设置 Message
  7. 支持点击背景关闭
  8. 可以在显示后动态更新 UI

Read More

消息发送和转发流程可以概括为:消息发送(Messaging)是 Runtime 通过 selector 快速查找 IMP 的过程,有了函数指针就可以执行对应的方法实现;消息转发(Message Forwarding)是在查找 IMP 失败后执行一系列转发流程的慢速通道,如果不作转发处理,则会打日志和抛出异常。

本文不讲述开发者在消息发送和转发流程中需要做的事,而是讲述原理。能够很好地阅读本文的前提是你对 Objective-C Runtime 已经有一定的了解,关于什么是消息,Class 的结构,selector、IMP、元类等概念将不再赘述。本文用到的源码为 objc4-680 和 CF-1153.18,逆向 CoreFoundation.framework 的系统版本为 macOS 10.11.5,汇编语言架构为 x86_64。

Read More

UIAutomation 是苹果提供的自动化测试框架,iOS 不像 Android 那样可以在 xml 文件中自动生成唯一的 id 作为标签,需要我们手动为控件添加可访问性(Accessibility)。如何让一个控件的可访问标签在当前页面唯一且不变呢?当然纯手工在代码中插入加标签的逻辑代码肯定是可行的,但费时费力,所以我在这里做一些用程序自动化添加标签尝试性的探索。

Read More

工作时经常会收到同事发来的一些链接,有的带空格的链接会断开,不能直接点击查看,需要手动复制完整链接并粘贴查看。所以我做了个 Mac 系统上的 URL 辅助工具,在复制 URL 时自动将其打开。还实现缓存常用链接、自动/手动连接切换、登录时启动等功能。开发语言为 Swift 和 AppleScript。

Read More

这周花了一天半的时间做了个 Mac OS X 上的小工具,用来查找相似内容的图片。起因是公司的 iOS 项目中已有的图片管理混乱,有些图片文件名不规范,还有一些内容重复但文件名不同的图片。现在视觉要给出一些 3x 分辨率的图片,如何与已有的低分辨率图片匹配,这又是个问题。人工一个个去找固然好,但这种技术含量低的体力活很浪费精力和时间。

Github 地址:https://github.com/yulingtianxia/SimilarImageHunter

Read More

来腾讯实习正好一个月了,因为项目已经进入了成熟期,接了两个需求,改了二十几个 bug。所以把这期间的一些思考写下来,发了邮件分享给组内同事们。我把一些自己觉得不合适的内容刨除出去,选取邮件的部分内容写在这里:)

Read More