2012-07-22 55 views
14

我读过一些帖子,其推荐使用:的UIGraphicsBeginImageContext必须是视网膜感知的?

UIGraphicsBeginImageContextWithOptions((image.size), NO, 0.0f) 

代替:

UIGraphicsBeginImageContext(image.size). 

因为第一个使用绘图时视网膜规模,否则,你得到块状图像。

我对使用或不使用视网膜缩放选项有点困惑。

如果我有一张1000x1000像素的照片,并且我调用UIGraphicsBeginImageContext传递这些尺寸,那么我是不是指定了我要绘制的点数?这可以吗?

或者我应该调用UIGraphicsBeginImageContextWithOptions传递一半尺寸(500x500px)?它有什么区别?

+1

'我读过一些职位,其推荐的使用...因为第一个使用的Retina级绘图时,否则,你得到块状影像 - 这个笔记帮了我很多。谢谢! – 2014-05-22 14:39:55

回答

11

您可以通过以下方法

[[UIScreen mainScreen] scale] 

有了这些信息,你可以决定你想要多少分画让您的设备的比例值。

+0

我知道,但我想现在是如果使用:UIGraphicsBeginImageContext(1000x1000px)与使用UIGraphicsBeginImageContextWithOptions((500x500px),NO,0.0f)任何不同。 – jvic 2012-07-22 20:29:23

+0

是不是视网膜只显示图像时重要,不绘图?我的意思是,我认为这并不重要的图像的大小,只要当我显示它,我显示在一半的大小(视网膜)的视图。 – jvic 2012-07-22 20:35:59

+1

@jvic他们都给你一个1000x1000px的图像。但我认为不同的是,当使用UIGraphicsBeginImageContext(1000x1000px)时,屏幕上显示的图形与1000x1000点,但UIGraphicsBeginImageContextWithOptions((500x500px),NO,0.0f)与500x500点,这是我的猜测。 – 2012-07-23 05:51:12

10

您可以创建这样的图像内容:

UIGraphicsBeginImageContextWithOptions(size, false, UIScreen.mainScreen().scale) 
+1

根据文档:_“如果您指定的值为0.0,则缩放系数将设置为设备主屏幕的缩放系数。”_。因此,在那里使用'0.0'而不是'UIScreen.mainScreen()。scale'具有相同的效果,但会受益于底层优化。 – 2015-10-07 11:13:38

+0

感谢您提供这些信息,我看到文档中提到scale = 0.0等于当前的屏幕比例,但在引擎优化下找不到任何内容。你能详细说明吗? – 2015-10-07 21:20:32

相关问题