UIKit图像围绕UIImage
类而展开。它是一个强大而灵活的类,隐藏其实现细节,使您能够以最少的代码执行许多演示任务。其最常见的模式是从文件加载数据并将生成的图像添加到UIImageView
实例。这里有一个例子:
1 | UIImage *image = [UIImage imageNamed:@"myImage"]; |
当然,不限于从外部数据加载图像。iOS使您能够从代码中根据需要创建自己的图像。清单3-1显示了一个简单的例子。它使用您指定的颜色和大小构建一个新的UIImage
实例,这将产生从函数返回的颜色样本。
为了实现这一点,清单3-1通过建立图像上下文开始,然后使用UIRectFill()
设置颜色并填充上下文,通过从上下文检索和返回一个新的图像。
清单 3-1 演示了基本的绘图框架。这个函数绘制一个彩色矩形,你可以创建自己的蒙那丽莎。只需提供自己的自定义绘图例程,并将目标绘图大小设置为应用程序所需的范围。
清单3-1创建自定义图像
1 | UIImage *SwatchWithColor(UIColor *color, CGFloat side) |
以下是需要记住的关于图像的几个简单点:
- 如本示例所示,您可以通过检查图像的
size
属性来查询其范围。大小是以点而不是以像素返回,因此数据大小可能是Retina系统返回数量的两倍:
1 | UIImage *swatch = SwatchWithColor(greenColor, 120); |
- 您可以使用
UIImagePNGRepresentation()
函数或UIImageJPEGRepresentation()
函数将图像实例转换为PNG或JPEG数据。这些函数返回包含压缩图像数据的NSData
实例。 - 您可以通过其
CGImage
属性检索获得图像的Quartz表示。UIImage
类基本上是一个围绕Core Graphics或Core Image图像的轻量级封装。对于许多Core Graphics函数,您需要一个CGImage
类型的引用。由于此属性不适用于使用Core Image创建的图像,因此必须将底层CIImage
转换为用于Core Graphics的CGImage
。
Note
UIImage
支持TIFF,JPEG,GIF,PNG,DIB(即BMP),ICO,CUR和XBM格式。您可以使用ImageIO框架加载其他格式(如RAW)。
本文翻译自《iOS Drawing Practical UIKit Solutions》作者:Erica Sadun,翻译:Cheng Dong。如果觉得本书不错请购买支持正版:亚马逊购买传送门,本书所有源代码可在GitHub上下载。译者虽然力求做到信,达,雅,但是由于时间仓促加之译者水平十分有限,文中难免会出现不正确,不准确,词不达意,难于理解的地方,还望各位批评指正,共同进步,谢谢。转载请注明出处。