快速添加注释文档(Document Comment)

在 Xcode 8 之前,我们可以使用非常好用的插件 VVDocument 来快速添加注释文档,默认设置下只需在要注释的方法上方连按三个 / 即可: Xcode 8 加入了一些签名的限制,使得无法再加载任意的第三方插件(开发让苹果认可的插件方法戳我,破解方式戳我),所以 VVDocument 也就无法再使用了。但是它自带了,在方法名上方按下 Command Option /,依然好用! »

一种 App 内路由系统的设计

本文仅探讨怎样才是路由系统该有的设计,并不涉及具体实现 App 发展到一定程度时,页面越来越多,工程越来越大,合作开发的人也越来越多,这时就可能需要引入路由系统(当然,从项目一开始启动就接入路由是最好不过了)。路由系统提供了一种简单的方式,让用户在不同页面间浏览时就像在浏览器中访问网页一样,一个地址对应一个完整内容的页面(一般使用 RESTful 的风格),如: Foo://users/nickname,打开用户页面 Foo://products/xxxx,打开商品页面 Foo: »

从头构建你的第一个 Xcode 扩展

几天前的 WWDC 发布了不少新特性,其中之一便是 Xcode官方插件支持。用户可以像安装普通软件一样安装插件,增强它的源代码编辑功能。这也直接导致了原有的第三方插件都不可用。目前开放的接口非常有限,只能对代码进行纯文本处理,不过相信以后会逐渐开放更多功能。 本文向读者展示如何利用 Xcode 8 构建一个编辑器扩展,并实现一个具体的功能。以下项目的所有代码均可以在 Github 上找到。 创建 Mac app 工程 下载最新的 Xcode 8, »

一种组件化的 Table View 的实现

背景 最近在做一个项目时,需要实现一些列表界面,总体上是上下滚动的,中间的部分段有可以横滚的,有一个个小标签式的,也有可循环滚动的焦点图的……且类似的界面大量出现,并随机组合。可以参照网易云音乐,早期版本的蘑菇街,小红书等等。 按以往的想法是,继承 UITableViewController 然后分多个 section,所有的数据与点击都在一个 VC 中完成。如果全是占满行的 Cell,勉强可以接受,但很快你会发现,你的代码变得庞大而臃肿,且不可维护。 »

Interface Builder 与修饰键

Interface Builder 本身已经够强大了,加上修饰键,更是如虎添翼。 调整大小 选中控件,按 Command = 可以将它重置为本征大小(一般是控件能完整显示内容的最小大小) 这样有时候还不够,因为有时候重置大小后它会不满足已有的约束,按 Option Command = 在重置大小的同时满足已有的约束: 调整大小时有时候需要保持控件原有的宽高比(比如图片),按住 Shift,轻松解决。 按住 Option,可以显示当前选中控件与其他控件的距离(鼠标滑到想测距离的控件上) »

如何优雅地编写 iOS 第三方库

iOS 经过八年多的发展,已经涌现出诸多优秀的第三方库,但怎样才算是优雅?总体来说,AFNetworking 就十分优雅,而 GPUImage 就只是可用,而不算优雅。编写优雅的第三方库,就像制作一件精美的艺术品一样,过程让人沉醉,结果令人赏心悦目。否则就是单纯的代码堆积与功能实现,过程像搬砖,完成后也没有成就感。下面就本人的一点经验,分享下如何优雅地封装第三方库。 命名 好的命名规则是一个成功的第三库的开始,然而现实中很许多人随性命名,导致沟通成本上升。事实上命名问题上,苹果有其官方统一的标准, »

UITextView 中显示富文本

UITextView 中可以通过 attributedText 属性来设置富文本,但 NSAttributedString 的使用不友好一直是一大诟病,如果能直接使用 HTML 就好了。事实上可以的,甚至可以加图片呢: NSString *str = @"<html><body>This is <font color='red'& »

Mac 下快速截屏

为了截屏功能打开 QQ?我相信有一大部分人是这么做的。事实上 Mac 上提供了十分便捷的截屏工具。 打开 系统偏好设置 => 键盘 => 快捷键 => 屏幕快照,可以看默认的快捷键设置: 按 Shift Command 3 快速截全屏,加 Control 可以将截屏保存到剪贴板,方便粘贴到 QQ 或 Office 等软件中。 按 »