PS: 太长了,分成两部整理。上半部是 Core Animation基础知识/如何设置 layer object/如何配置基本的动画 核心动画(Core Animation)是一种在iOS和OSX上都可用的图形渲染和动画的基础框架,你可以使用它来让view和其他虚拟元素具有动画特效。Core Animation替你完成了大部分的动画的绘制每帧的工作。你需要做的是配置一些动画参数(比如开始点和结束点)、通知Core Animation启动它。Core Animation负责鱼虾的工作,处理大部分实际的绘制工作到图形硬件来加速绘制。这个自动图形加速具有高帧率(frame rate)和柔和动态效果,并且不会加重CPU的负担拖慢你的app。

点我阅读全文...

关于Core Text Core Text 是一个高级,底层的布局文字和处理字体的技术。布局文字指通过字符编码和字体数据生成字形,然后在graph runs里控制他们的位置。他让graph runs在line中排列,然后把lines排列进multiline frames(比如一段文字)。Core Text 还提供字形和布局相关的数据,如字形位置和线条和框架的度量。它处理字符属性和段落样式,包括各种类型的标签样式和定位。 Core Text API提供了关于fonts, font collections, font descriptors,便捷的访问font 数据。

点我阅读全文...

UIKit提供app的文字和网页对象,可以直接使用UItextView,TextField,Label。当用户编辑文字时,app必须管理键盘。当用户点击textfile,textview或者网页上的表单,iOS动态弹出键盘到视图。App可以直接绘制和管理文字。UIkit的底层text view是一个强大的布局引擎——Text Kit. 如果你需要定制布局过程或者需要干预这个过程的行为,你可以使用Text Kit。Text Kit是一组类和协议,提供了高质量的排版服务,允许app用所有良好的排版设置来存储,布局,显示文字。比如:kerning, ligatures, line breaking, and justification.

对于大多数app来说,你可以使用high-level 文字显示类和text kit来处理所有文字场景。对于需要定制解决方案的少数文本和特殊需求,可以使用底层技术,例如Core Text,Core Graphics和Core Animation框架中的编程接口以及UIKit中的其他API。

要直接与iOS的文本输入系统通信,请实现UITextInput协议以及相关的协议和类。您的应用程序还可以使用拼写检查和正则表达式的技术。

你的应用程序具有一系列用于输入和编辑数据的选项。UIKit框架包含编程接口,用于编辑视图中的数据并将数据输入到应用程序中。自定义输入视图可以替换系统键盘以允许输入特殊数据;输入附件视图是系统键盘(或自定义输入视图)上方的自定义视图,可使用户以特定于应用程序的方式影响编辑的数据。通过使用UIPasteboard和相关类,应用程序可以在自己的不同位置或与其他应用程序之间复制,剪切和粘贴数据。作为复制粘贴操作的一部分,用户在上下文编辑菜单上点击命令;你的应用程序管理这个菜单,并可以添加自定义命令。

点我阅读全文...

Foundation提供了一个编程架构来传递有关事件发生的信息。这个架构本质上是对于不同线程之间传递消息,事件处理的封装,依赖于run loop运行机制,通过run loop mode传递事件,通过runloop的observer回调处理事件。

点我阅读全文...

Image I / O编程接口允许应用程序读取和写入大多数图像文件格式。最初是Core Graphics框架的一部分,Image I / O驻留在它自己的框架中,允许开发人员独立于Core Graphics(Quartz 2D)使用它。 Image I / O提供了访问图像数据的明确方式,因为它非常高效,可以轻松访问元数据并提供颜色管理。image IO和 Bitmap images and image masks 绘制文档笔记 的图片绘制相关。

点我阅读全文...

bitmap image和image mask的绘制是quartz 2d的传统项目。images和image masks在quartz里的表达是CGImageRef数据类型。有非常多可以用于创建image的方法。其中一些需要数据提供者或图像源来提供位图数据。其他功能通过复制图像或对图像执行操作来从现有图像创建图像。无论您如何在Quartz中创建位图图像,都可以将图像绘制为任何图形上下文。请记住,位图图像是以特定分辨率的位数组。如果您将位图图像绘制为与分辨率无关的图形上下文(例如PDF图形上下文),则位图会受到您创建分辨率的限制。

点我阅读全文...

高质量图形是一个良好设计过的app的重要组成部分。高质量图形是OS X和其他操作系统的区别之一。当某些操作系统还在使用flat colors和矩形对象的时候,OS X已经使用color、透明、等高级的组合系统compositing system来让app有更顺滑和友好的外观了。

Drawing是大部分cocoa app的基本组件。如果你的app只使用基本系统空间,那么cocoa 做了所有绘制的工作。如果你使用custom views或者controls,你来负责使用drawing commands实现显示。

Cocoa drawing环境可用于构建在Application Kit框架(AppKit.framework)之上的所有应用程序。该框架定义了大量用于绘制从原始形状到复杂图像和文本的所有类和函数。Cocoa Cocoa drawing也依赖于Foundation框架中找到的一些原始数据类型(Foundation.framework)。

点我阅读全文...

ViewController顾名思义,用于控制内部的所有VIew。view controller 有几种类型,比如容器式:split view controller 多用于ipad,container view controller,navigation view controller等。这些容器式的,大部分都没有常见VC的功能逻辑,通过包含一个或者多个childviewcontroller 来实现。

点我阅读全文...

应用程序内存管理是在您的程序运行时分配内存,使用它并在完成时释放内存的过程。一个写得很好的程序尽可能少地使用内存。在Objective-C中,它也可以被看作是将有限内存资源的所有权分配给许多数据和代码段的一种方式。

OC提供两种内存管理方式:手动管理内存MRR(manual retain-release),自动自动引用计数ARC。ARC使用和MRR一样的引用计数方法,在编译器加入管理内存的方法。

点我阅读全文...

键值观察提供了一种机制,允许对象在其他对象的特定属性值修改是收到通知。 这对于应用程序中的model层和controller层之间的通信特别有用。 (在OS X中,controller层绑定技术在很大程度上依赖于键值观察。)controller对象通常会观察model对象的属性,View对象通过controller观察Model对象的属性。 另外,Model对象可以观察其他Model对象(通常用于确定依赖值何时发生变化),甚至可以观察其本身(再次确定依赖值何时发生变化)。
您可以观察属性,包括简单属性,一对一关系和多对多关系。 多对多关系的观察者会被告知所做更改的类型以及参与更改的对象。

点我阅读全文...

许多人将性能等同于速度。事实上,如果一个程序能在一秒钟内完成一项复杂的操作,你可能会认为该程序性能良好。可是,这里这个速度可能是一种误导性的测量。在复杂的软件系统中,操作速度不是固定值。如果您在不同条件下多次执行相同的操作,则完成该操作所需的时间可能差异很大。这是因为程序只是在本地系统上共享资源的许多进程之一,并且这些资源的使用(或滥用)会影响所有其他进程。

点我阅读全文...

并行编程旨在解决如何更高效的使用多核处理器来处理一个程序内的多个并发任务问题。(用户界面,后台任务)现代的并行编程技术,在OSX和iOS平台上主要使用的是GCD(大型中央调度),这个技术比传统的thread管理好的地方是,它是基于操作系统级别的,剥离了应用程序,节约了线程的调用堆栈。其次对于不同平台,GCD可以统一管理,类似某种线程池的技术,对于不同的系统,和系统的运行状态,自动处理thread的各种问题。Operation Objects是基于GCD封装的Objective-C对象。

点我阅读全文...

what is? 一个循环:线程进入并且用于于执行事件处理,目的为了响应某些incoming 事件。你的代码负责提供状态控制,用于实现runloop的实际循环部份(loop 循环体)。换句话说,你的代码提供的 while/for 循环驱动了run loop,在你的循环内,你是用一个runloop对象去“执行”事件——处理接受很多事件和安装事件处理方法的代码。

点我阅读全文...