Concurrency Programing in Swift

本文主要讨论和介绍Swift的并发编程,现在iOS中有两套比较先进的并发编程方案可以供我们使用,一个是GCD,另一个是操作队列(Operation Queues)。GCD是一套基于C的底层API,而操作队列是在GCD基础上的面相对象抽象,GCD提供了更加底层的控制,而操作队列则在GCD之上实现了一些方便的功能。

阅读全文

RxSwift响应式编程学习与理解

最近公司在前端架构优化方案时提到了MVP和MVVM两种模式,其实这两种架构从接触移动端开发以来,一直有听到过,但是一直没有深入的去学习理解。借这次App代码重构的机会,我仔细的了解了MVP和MVVM两种架构。其中在接触MVVM时,提到了一种绑定(响应式)的概念,即Model和ViewModel之间双向绑定,View的变动,自动反映在 ViewModel,反之亦然。于是我就想利用业余时间好好学习一下RxSwift,理解这种响应式的方式是如何实现的。

阅读全文

WCDB学习与理解

简介

WCDB(WeChat DataBase)是微信官方的移动端数据库组件,它基于SQLCipher,是一个关系型数据库,支持iOS, macOS和Android。WCDB提供了三个基础类进行数据库操作:WCTDatabase、WCTTable、WCTTransaction。它们的接口都是线程安全的。WCDB几乎涵盖了常用的数据库操作,同时还开放了核心层接口,方便用户扩展一些未封装的复杂SQL操作。安全方面它继承了SQLCipher的加密方式,内建了Repair Kit用于修复损坏的数据库,通过内建宏的方式实现了ORM(Object Relational Mapping),方便地实现了对象属性到数据表字段的映射,通过一种名为WINQ的规则对SQL进行了抽象,避免了冗长的SQL胶水代码,也防止了SQL注入。

阅读全文

iOS自定义模态视图转场

我们在使用淘宝App购物的时候,经常用到的一个操作就是加入购物车,好奇的朋友一定会发现,当我们在点击加入购物车按钮的时候出现了一个酷炫的动画。原本的视图出现了一定的折叠之后,仿佛嵌入了屏幕内部,随后弹出商品详细参数的页面。实际上,这是一种自定义的模态视图转场动画。下面我们一步一步分析实现类似的模态视图转场动画。

阅读全文

使用fastlane gym实现ipa自动打包脚本

fastlane

fastlane是一组工具套件,旨在实现iOS应用发布流程的自动化,并且提供一个运行良好的持续部署流程,只需要运行一个简单的命令就可以触发这个流程。

阅读全文

Swift中的生成器和序列

前言

生成器(Generators)与序列(Sequences)构成了Swift式循环。

生成器(Generators)

提到数组我们就会想到遍历,一般的遍历可能都是从头到尾进行的。但是如果你有特殊的需求呢。你可能不想呆板的进行遍历。这时候Generators就可以派上用场了。
Generators的存在是进行特殊癖好的数组遍历,其筛选出符合该癖好的下标索引到数组没有元素为止。
任意一个generator都需要遵从如下协议:

阅读全文

iOS视频、音频播放

一、AVPlayerViewController

iOS9之前,我们经常使用MPMoviePlayerController实现视频、音频文件的播放。iOS9之后,MPMoviePlayerController被苹果弃用,苹果推荐使用AVPlayerViewController,AVPlayerViewController的功能比MPMoviePlayerController更为强大。单独使用AVPlayer我们就可以实现视频和音频两种文件的播放。由于其基于AVFoundation和AVKit,所以在开始使用之前我们需要先导入AVFoundation框架。具体实现如下:

阅读全文

UILabel垂直方向布局调整——实现居上居下效果

iOS UIKit框架默认只能通过UILable的textAlignment属性调整其水平方向上的布局,设置文字水平居左、居中和居右。不能对文字垂直方向上的布局做出直接调整,但是我们通过重写UILabel的textRectForBounds和drawTextInRect方法,能够很便捷的调整UILable的内容布局,实现居上、垂直居中和居下的效果。具体实现如下:

阅读全文