iOS-绘图系统相关学习笔记(一)

绘图方面的知识
1.使用imageNamed:加载的图片会缓存在内存中,如果再次请求相同图片时则会直接返回图片。

2.可以通过类方法imageWithContentsOfFile:initWithContentsOfFile:来加载图片,不过这两种方式加载的图片不会缓存在内存中?!

3.UIImageView实际上可以有两幅图片,一幅赋予image属性,另一幅赋予highlightedImage属性;UIImageView的highlighted属性的值决定了显示哪一幅。

4.UIImageView如何绘制依赖于contentMode属性。

UIViewContentModeScaleToFill, //长宽都缩放去适配视图大小
UIViewContentModeScaleAspectFit, //长宽保持比例不变去缩放适配大小。适配最小边
UIViewContentModeScaleAspectFill,//长宽保持比例不变去缩放适配大小。适配最大边
UIViewContentModeRedraw //当视图的bounds改变时,会重绘图片?
UIViewContentModeCenter //图片居中,保持原尺寸大小
UIViewContentModeTop //图片置顶,保持原尺寸大小
UIViewContentModeBottom //图片置底,保持原尺寸大小
UIViewContentModeLeft //图片置左,保持原尺寸大小
UIViewContentModeRight //图片置右,保持原尺寸大小
UIViewContentModeTopLeft //图片置左上方,保持原尺寸大小
UIViewContentModeTopRight //图片右上方,保持原尺寸大小
UIViewContentModeBottomLeft //图片置左下方,保持原尺寸大小
UIViewContentModeBottomRight //图片置右下方,保持原尺寸大小

5.UIImageView的一些优化建议。
(1)尽可能提供预览图。如果有一些比较大的图片需要被频繁的缩小作为预览图使用。那么可以考虑直接为这些图创建缩小版的预览图片,并把它们缓存起来。这样可以缓解每张图显示时都需要进行放缩操作。
(2)设置的图片尺寸尽量和UIImageView的尺寸相匹配。创建一个和image view当前尺寸大小一致的图片进行设置,要比直接分配一张很大的图片然后设置到image view中放缩要好得多。
(3)尽可能的是图片都为不透明的。除非你是故意设置图像为透明效果的,否则别这么干。

6.图形上下文,就是一个可以绘制图片的地方(想象成一个画板?)。
主要有两种方式获取图形上下文。
(1)创建一个图像上下文。使用UIGraphicsBeginImageContextWithOptions创建一个图形上下文。然后可以在上下文中绘制图片。当完成时,调用UIGraphicsGetImageFromCurrentImageContext将上下文转成UIImage,然后用UIGraphicsEndImageContext关闭上下文。
(2)继承UIView,并重写drawRect:方法。当该函数被调用时,Cocoa已经创建一个图形上下文让你进行图像绘制,并且你所绘制的就是UIView将显示的。(还有个类似的方式就是集成一个CALayer,重写其drawInContext:

PS:
1.使用UIGraphicsBeginImageContextWithOptions不仅创建一个图形上下文,他还让该图形上下文作为当前图形上下文。
2.当调用drawRect:时,UIView的绘图上下文已经是当前图形上下文了。

7.绘图工具集合
一个是UIKIt,一个则是Core Graphics。
(1)如果已经是在当前上下文中,可以直接使用UIKIt进行图形绘制。或者通过UIGraphicsPushContext将该上下文成为当前上下文,并在结束绘制后用UIGraphicsPopContext恢复。
(2)使用Core Graphics必须明确指定一个图形上下文。

8.iOS的绘图系统是非常有效的,并且一旦一个视图已经绘制自身,结果会缓存,这样缓存的图形可以重用而不是从头开始重复绘图操作。

你可能感兴趣的:(图片,内存,缓存,图形)