UIGraphicsBeginImageContext必须是Retina-aware?

jvi*_*vic 17 core-graphics core-image ios

我读过一些推荐使用的帖子:

UIGraphicsBeginImageContextWithOptions((image.size), NO, 0.0f) 
Run Code Online (Sandbox Code Playgroud)

代替:

UIGraphicsBeginImageContext(image.size).
Run Code Online (Sandbox Code Playgroud)

因为第一个在绘图时使用Retina刻度,否则会得到块状图像.

关于何时使用或不使用视网膜尺度选项,我有点困惑.

如果我有1000x1000像素的照片,并且我调用UIGraphicsBeginImageContext传递这些尺寸,我是不是要确切地指定我想要绘制多少点?这可以吗?

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

lu *_*uan 11

您可以通过以下方法获取设备的比例值

[[UIScreen mainScreen] scale]
Run Code Online (Sandbox Code Playgroud)

通过此信息,您可以决定要绘制的点数.


the*_*end 11

您可以像这样创建图像上下文:

 UIGraphicsBeginImageContextWithOptions(size, false, UIScreen.mainScreen().scale)
Run Code Online (Sandbox Code Playgroud)

  • 根据文档:_"如果指定值0.0,则比例因子将设置为设备主屏幕的比例因子."_.因此,使用"0.0"而不是"UIScreen.mainScreen().scale" - 具有相同的效果,但将受益于引擎盖下的优化. (2认同)