Carthage的使用
简介Cathage 一直致力于成为给 Cocoa 应用添加框架最简单的方式。它的使用流程如下:
创建一个 Cathage ,在里面列出你的项目要使用的第三方框架;
运行 Cathage, Cathage 会获取并创建你列出的所有框架;
把生成的 .frameword 二进制文件拖到你的工程文件中。
Cathage 帮你创建第三方依赖、提供二进制的 framework 文件,并且不会改变你的项目架构和创建。 Cathage 在你使用的过程中并不会修改的你工程文件和你的项目设置。
Cathage 与 CocoaPods 的不同CocoaPods 是存在已久的 Cocoa 的第三方依赖管理方式,在此基础上为什么还要使用 Cathage ?
首先,CocoaPods 会自动为你的应用与第三方依赖创建和更新一个 Xcode workspace;Carthage 使用 xcodebuild 创建二进制 framework ,添加和使用这此框架是用户自己操作的。CocoaPods 使用上更简单,而 Carthage 更灵活,耦合性更低。
从 CocoaPods 的 README 可以看出它有以 ...
【iOS】AsyncDisplayKit的布局
AsyncDisplayKit布局的优势UIKit由于复杂的层级结构变得越来越expensive,而AsyncDisplayKit的 Layout API 作为一个新的选择,具有以下的优势。
快速:与手动布局代码一样快,比自动布局快了很多;
异步和同步:布局可以在子线程中进行,避免打断用户的操作;
声明:布局声明使用的是不可变的数据结构。这样使布局代码可以更容易开发,注释,预览,调试,介绍和维护;
缓存管理:布局的结果是不可变的数据结构,所以可以在后台进行计算和缓存,改善用户的体验;
可扩展性:很容易在类共享代码。
布局受 CSS3 Flexbox布局的启发熟悉Flexbox的人可以注意到这两个系统有很多共同点。但是 AsyncDisplayKit Layout Api 并没有实现全部的CSS。
基本概念AsyncDisplayKit 的布局系统有两个核心理念:
布局说明( Layout Specs )
布局元素( Layout Elements )
布局声明Layout Specs 是 layout specification 的简写,不是物理上的概念。布局声明的作用是作 ...
【iOS】AsyncDisplayKit初识
简介 AsyncDisplayKit 是 Facebook 开源的一个用于保持 iOS 界面流畅的库。
在 ASDK 中最基本的单位就是 ASDisplayNode,每一个 node 都是对 UIView 以及 CALayer 的抽象。但是与 UIView 不同的是,ASDisplayNode 是线程安全的,它可以在后台线程中完成初始化以及配置工作。
如果按照 60 FPS 的刷新频率来计算,每一帧的渲染时间只有 16ms,在 16ms 的时间内要完成对 UIView 的创建、布局、绘制以及渲染,CPU 和 GPU 面临着巨大的压力。
但是从 A5 处理器之后,多核的设备成为了主流,原有的将所有操作放入主线程的实践已经不能适应复杂的 UI 界面,所以 ASDK 将耗时的 CPU 操作以及 GPU 渲染纹理(Texture)的过程全部放入后台进程,使主线程能够快速响应用户操作。
ASDK 通过独特的渲染技巧、代替 AutoLayout 的布局系统、智能的预加载方式等模块来实现对 App 性能的优化。
初步使用节点 nodes的使用大致与view的使用方法相同,少数像 ...
【iOS】AsyncDisplayKit的组件
节点容器在容器中使用NodesAsyncDisplayKit有以下几种 Container
ASDK Node Container
UIKit Equivalent
ASCollectionNode
代替UIKit的 UICollectionView
ASPagerNode
代替UIKit的 UIPageViewController
ASTableNode
代替UIKit的 UITableView
ASViewController
代替UIKit的 UIViewController
ASNavigationControllerv
代替UIKit的 UINavigationController,遵循ASVisibility协议
ASTabBarController
代替UIKit的 UITabBarController,遵循ASVisibility协议
Node Container的优势Node Container可以自动地管理node的智能预加载,它会保证node的的布局计算、数据获取、解码和渲染会以异步的方式进行。
Node的子类AsyncDis ...