知识点一. UIImage的线程安全
文章提到UIImage的不可变性:
UIImage一旦创建,就不能再改变它的属性,只能在初始化方法中提供属性值或者依赖图片自身的属性.
这个特性意味着在任何线程UIImage都可以安全地使用.而需要对UIImage的图像进行处理时,需要做的就是利用下面的方法获得图像二进制数据再自定义创建一个图像副本.
UIImageJPEGRepresentation(UIImage* _Nonnull image,CGFloatcompressionQuality)// compressionQuality 针对JPEG有损压缩的质量系数: 0.0(low)~1.0(high)UIImagePNGRepresentation(UIImage* _Nonnull image)
知识点二. 创建UIImage的注意点
使用二进制数据和imageNamed创建UIImage对象时和,系统会对图片数据在内存上进行缓存.
使用imageNamed创建UIImage对象,默认main nundle处加载.但其会优先在系统缓存中寻找相同名字的图片,若没有找到就从asset catalog和沙盒里查找.
内存上的图像数据缓存只有在内存警告时才会被自动清除,因此往往消耗着一定的内存.所以针对使用频率较低的图片可以使用文件路径加载的方式imageWithContentsOfFile创建.(但也要同时考虑读写操作的性能消耗)
知识点三. 关于图片的拉伸
常用方法:resizableImageWithCapInsets:resizingMode:
自iOS6之后,图片拉伸模式分为平铺和常规拉伸(默认行为).这里的平铺模式表示用指定矩形区域进行重复填充图片.而矩形区域由UIEdgeInsets设定,一个需要设置固定顺序的Top,Left,Bottom,Right的Rect结构体.
知识点四. iOS/OSX支持的图片格式
iOS支持的图片格式
总结
对于技术的进步,最好的方法就是不断地坚持,利用好自己的实践,多看看优秀的文章和代码,去学习去思考
文/One9398(作者)
原文链接:http://www.jianshu.com/p/025d75f54da5
著作权归作者所有,转载请联系作者获得授权,并标注“作者”。