探索scrollView的实现

图层渲染 contentOffset contentSize contentInset UIScrollView滚动视图,绝对算的上是iOS开发中最重要的控件,用来展示多于一个屏幕的内容,可以滚动显示超过屏幕外的内容的特性使其产生了更多强大的子类:UITableView、UICollectionView、UITextView等等。尽管功能如此强大,但是scrollView本质上只是一个UIView的黑魔法,本文将剖析UIScrollView这种强大特性的实现过程 图层渲染 这里不得不提到UIView和CALayer的关系。在UIKit框架中,UIView是所有界面元素的基础,我们页面上可见的控件几乎都是从这个类派生出来的。之所以说几乎意味着我们也可以不通过UI...
Click to read more ...

二维码扫码和应用跳转

扫描相关类 应用跳转 二维码扫描 读取二维码信息进行应用跳转 扫描优化 应用传值 前面我们已经调到过怎么制作二维码,在我们能够生成二维码之后,如何对二维码进行扫描呢? 在iOS7之前,大部分应用中使用的二维码扫描是第三方的扫描框架,例如ZXing或者ZBar。使用时集成麻烦,出错也不方便调试。在iOS7之后,苹果自身提供了二维码的扫描功能,从效率上来说,原生的二维码远高于这些第三方框架。本文讲解如何使用原生框架实现二维码扫描功能,并且进行扫描后的项目跳转。 扫描相关类 二维码扫描需要获取摄像头并读取照片信息,因此我们需要导入系统的AVFoundation框架,创建视频会话。我们需要用到一下几个类: AVCaptureSession 会话对象。...
Click to read more ...

定制多样式二维码

二维码生成 二维码拓展 二维码/条形码是按照某种特定的几何图形按一定规律在平台(一维/二维方向上)分布的黑白相间的图形纪录符号信息。使用若干个与二进制对应的几何形体来表示文字数值信息。 最常见的二维码功能包括信息获取、网站跳转、电商交易、手机支付等等,其拥有密度小、信息容量大、容错能力强、成本低、制作难度低等优点。在移动开发中,二维码的地位也越来越重要,掌握二维码的基本操作是重要的本领之一。 在iOS7之后,苹果自身集成了二维码的生成和读取功能。生成二维码包括以下步骤 导入CoreImage/CoreImage.h头文件 使用CIFilter滤镜类生成二维码 对生成的二维码进行加工,使其更清晰 除了...
Click to read more ...

正则表达式

表达式字符解析 语法/字符说明表 代码实操 正则表达式是一种用来进行文本匹配的工具,其语法优美简洁。在开发中,查找、对比以及匹配字符串是家常便饭的业务,通过正则表达式我们将这些业务描述成某些需求规则,来让我们的代码更美观、实用。例如我们要验证用户输入的密码长度是否满足6~18位的长度,新手最常见的验证方式是判断输入的密码长度 return (textField.text.length >= 6 && textField.text.leng <= 18); 尽管这种判断方式没有任何问题,而上面的验证换做正则表达式的匹配字符就显得短小精悍 ^.{6,18}$ 还有,大部分的固定电话都是0区号-八位数字的格式,那么正则表达式的匹配如下...
Click to read more ...

定制自己的瀑布流

关于UICollectionView UICollectionViewLayout 相关方法 准备工作 代码实现 多说几句 前段时间开发的时候,需要在tableView上拉的时候实现最底下的cell随着滑动从左边移动出来的效果(淘宝客户端在上拉加载的时候从左边滑动出现的效果)。苦思了很久,最终通过在scrollView的代理中通过判断偏移量来改变当前最下面的cell的frame实现这种效果,但是这样的实现却远远达不到我想要的目标。同时,在滑动tableView时进行大量繁杂的计算还造成了上拉时轻微卡顿的现象,于是我导出寻找另外的解决方案。终于,被我忽视了很久的UICollectionView成为了解决这一问题的最佳选择。 关于UICollectionVi...
Click to read more ...

数据持久化

属性列表 数据归档/数据序列化 sqlite数据库 coreData 在程序开发中,数据层永远是程序的核心结构之一。我们将现实事物进行抽象,使之变成一个个数据。对这些数据的加工处理是代码中能体现技术水平的一大模块,比如数据的请求、解析、缓存、持久化等等。适当的对数据进行持久化存储可以实现应用的离线功能,以此提高用户体验。在iOS开发中,苹果提供了四种持久化方案供我们选择。这些方案分别包括属性列表plist、数据归档NSKeyedValueArchiver/NSUserDefaults、数据库sqlite和coreData等,它们的区别如下 属性列表 属性列表是一种明文的轻量级存储方式,其存储格式有多种,最常规格式为XML格式。在我们创建一个新的项目的...
Click to read more ...

修改Xcode生成API介绍文档

导出注释标准 修改Xcode自身生成的文件注释 如何导出文档 最近工作需要和其他公司进行项目交接的时候,原以为像往常一样直接交付源代码就行了,谁知道客户公司需要我们提供API文档。瞬间我和小伙伴们都惊呆了,什么鬼!从来没做过。后来看了一下安卓组提供的API文档发现是HTML格式的类文件注释介绍,于是残酷的打消了我想手动编写API文档的想法。 抱着这样的想法在网上搜索了蛮久,总算是找到了Xcode自带的导出API文档的方法。但作为崇拜猫神的一员的我,使用的是猫神的VVDocumenter插件,惊讶的发现这个插件生成的注释并不能支持导出正确的文档。于是只好苦逼的加班加点把整个项目的注释统统修改了一遍,最近在简书上看到小码哥的一篇修改Xcode自动生成的文件注释的文章...
Click to read more ...