use*_*509 9 drawing ios uigraphicscontext swift
我有一个绘图方法,但在调整UIGraphicsBeginImageContextWithOptions的比例因子时,绘图性能会受到很大影响.
当比例为1.0时,一切都工作得非常快,但是,当视网膜显示的比例因子为0.0,2.0或3.0时,在绘制时有很多滞后的表现很糟糕.
当视网膜设备使用0.0,2.0或3.0的比例因子时,可以修改什么来提高性能?
绘制缓慢,滞后:
UIGraphicsBeginImageContextWithOptions(self.view.frame.size, false, 0.0)
UIGraphicsBeginImageContextWithOptions(self.view.frame.size, false, 2.0)
UIGraphicsBeginImageContextWithOptions(self.view.frame.size, false, 3.0)
Run Code Online (Sandbox Code Playgroud)
画得快,没有滞后:
UIGraphicsBeginImageContextWithOptions(self.view.frame.size, false, 1.0)
Run Code Online (Sandbox Code Playgroud)
我不确定您要执行哪种绘图,因为建议会根据应用程序而有所不同。例如,如果您正在绘制文本,然后还有要在当前环境等配置大量设置context?.setShouldSmoothFonts
,setShouldSubpixelQuantizeFonts
或setShouldSubpixelPositionFonts
。
Apple默认情况下将绘制的图像质量设置为很高,因此,您可能需要通过调整当前Core Graphics上下文的参数来优化性能,如下所示。
您可以尝试(在绘制之前)设置CGInterpolationQuality
current的CGContext
。有一个显著的渲染速度提升.none
还是.low
比较.medium
和.high
,但是这与画质的平衡。尝试如下:
UIGraphicsBeginImageContextWithOptions(self.view.frame.size, false, 0.0)
let context = UIGraphicsGetCurrentContext()
context?.interpolationQuality = .medium //Change this value as per your needs
//Insert drawing code here.
Run Code Online (Sandbox Code Playgroud)考虑使用图案来加快绘图代码。例如UIColor(patternImage: image)
。
调整上下文参数,例如context?.setMiterLimit(-10)
和context?.setShouldAntialias(false)
。
请注意,您可以尝试使用调整的比例因子这些上下文参数1.0
以及0.0
中UIGraphicsBeginImageContextWithOptions
视使用情况。为了提供更快的渲染效果,在图像质量较低的情况下,1.0
可以使用参数,而对于更好的图像质量,可以将比例因子设置为0.0
。
归档时间: |
|
查看次数: |
1063 次 |
最近记录: |