UIGraphicsBeginImageContext 和 UI
2017-07-05 本文已影响207人
村里竹竿
这两个方法都是绘图时候用的方法,功能上这两个方法是一样的。但是就图片质量上这两个参数还是有一定区别的。
下面就分析下这两个方法:(先从UIGraphicsBeginImageContextWithOptions
说起)
-
UIGraphicsBeginImageContextWithOptions(CGSize size, BOOL opaque, CGFloat scale)
,
- 第一个参数是想要渲染的图片的尺寸;
- 第二个参数用来指定所生成图片的背景是否为不透明,指定为
YES
得到的图片背景将会是黑色,反之NO
表示是透明的; - 第三个参数表示位图的缩放比例,如果设置为 0,表示让图片的缩放因子根据屏幕的分辨率而变化。和
[UIScreen mainScreen].scale
相等的。
关于第三个参数可以看官方文档说明:
The scale factor to apply to the bitmap. If you specify a value of 0.0, the scale factor is set to the scale factor of the device’s main screen.
-
UIGraphicsBeginImageContext(CGSize size)
仅有一个参数,传递的是想要渲染位图的尺寸。但是在官方文档上面也有说明。This function is equivalent to calling the
UIGraphicsBeginImageContextWithOptions function with the
opaque parameter set to NO and a scale factor of 1.0.大致的意思就是这个方法和
UIGraphicsBeginImageContextWithOptions(CGSize size, NO, 1.0)
是等价的。
总结:一般我们用的都是UIGraphicsBeginImageContextWithOptions(CGSize size, YES, 0)
因为这样得到的图片失真很少,比较接近原图像,而 UIGraphicsBeginImageContext()
这个方法得到的图片质量相对来说比较差。