CodeV

1.1-框架

iOS的绘图通常使用的技术主要来源于UIKit和QuartzCore框架。 它们由现代化的Objective-C接口(来自UIKit框架)以及早期的基于C语言的函数和Core Foundation样式的对象(来自QuartzCore框架)组成。 这些不同的项目可并存在于你的代码中。 下面是一个示例,显示了一个UIKit方式的绘图操作,和一个Quartz方式的绘图操作:

// Draw a rounded rectangle in UIKit
 UIBezierPath *bezierPath = [UIBezierPath bezierPathWithRoundedRect:inset cornerRadius:12];
 [bezierPath stroke];

// Fill an ellipse in Quartz
CGContextFillEllipseInRect(context, rect);

QuartzCore框架通常被称为Quartz或Quartz 2D。 后者是苹果公司的原生2D渲染和抗锯齿API的官方名称。 它也是在苹果主要的绘图参考开发库:“Quartz 2D编程指南”中使用的名称。

这个框架的使用范围比Quartz 2D名称字面定义的更加广泛。 QuartzCore框架实现了合成,渲染,以及许多其他的图形特性。 例如,QuartzCore APIs包括实现动画,平铺和Core Image滤镜(即使Core Image确切来说是一个独立的框架)。

对于iOS开发人员来说,Quartz通常以其内部实现名称Core Graphics而更为人所知。 这本书在全文中使用了相同意思可以互换的Quartz和Core Graphics两个名称。 大多数基于C的API是以两个字母的CG前缀开始,这是源自Core Graphics首字母的名称。 从几何结构体(CGRectCGPoint)到对象(CGColorRefCGImageRefCGDataProviderRef),Quartz提供了庞大而且丰富多样的绘图技术。

Quartz及其前身已经存在了很长时间。 甚至可追溯到上世纪80年代,在Diaplay PostScript为NeXTStep操作系统提供图形技术支持时。 Quartz已经使用了与现代PDF非常相似的内部成像模型。

在每个iOS版本更新中,苹果都将绘图API进一步向Objective-C转移,简化、增强和一步步优化程序绘图。 然而,Core Graphics的函数在日常绘图开发中仍然发挥着重要作用。 虽然较新的基于UIKit的常用绘图技术取代了许多常见的基于Core Graphics的任务,但它们并没有完全取代它们。 所以在现阶段,准备好在日常工作中同时使用两个框架吧。


本文翻译自《iOS Drawing Practical UIKit Solutions》作者:Erica Sadun,翻译:Cheng Dong。如果觉得本书不错请购买支持正版:亚马逊购买传送门,本书所有源代码可在GitHub上下载。译者虽然力求做到信,达,雅,但是由于时间仓促加之译者水平十分有限,文中难免会出现不正确,不准确,词不达意,难于理解的地方,还望各位批评指正,共同进步,谢谢。转载请注明出处。