您的位置:首页 > 移动开发 > IOS开发

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

2016-03-14 19:43 477 查看
绘图方面的知识

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的绘图系统是非常有效的,并且一旦一个视图已经绘制自身,结果会缓存,这样缓存的图形可以重用而不是从头开始重复绘图操作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  图形 图片 内存 缓存