使用抗锯齿为视网膜显示创建圆形或磁盘

时间:2015-03-31 05:47:59

标签: ios swift core-graphics

我使用CGContextFillEllipseInRect中的CoreGraphic创建了一个圆圈。

我使用此圈(实际上是一个磁盘)来替换thumbImage的{​​{1}}。默认情况下会应用抗锯齿。

但我的iPhone 6上的结果显然不太好。我可以清楚地看到像素,而不是关闭抗锯齿,但比普通UISlider的像素更多。

也许我做错了什么。所以我的问题是,有没有办法以编程方式获得与UISlider默认使用的相同的漂亮磁盘?

修改

以下是我创建磁盘的方法:

UISlider

1 个答案:

答案 0 :(得分:5)

问题是您在使用UIGraphicsBeginImageContext时正在创建非视网膜图形上下文,如文档中所述:

  

此函数相当于调用UIGraphicsBeginImageContextWithOptions函数,其中opaque参数设置为NO,比例因子为1.0

相反,您应该使用UIGraphicsBeginImageContextWithOptions来创建图像上下文。如果您想要一个支持透明度的图像(与您现在隐含的相同),可以继续传递NO作为opaque参数。

在大多数情况下,您可以传递0.0作为比例因子。这会将比例因子设置为设备主屏幕的比例因子。再次,如文档中所述:

  

如果指定值0.0,则比例因子将设置为设备主屏幕的比例因子。


因此,简而言之,您应该像这样创建图像上下文:

UIGraphicsBeginImageContextWithOptions(rectForDisk.size, false, 0.0) // false for Swift