为视网膜显示创build一个具有抗锯齿function的圆形或圆盘

我使用CoreGraphic CGContextFillEllipseInRect创build了一个圆。

我使用这个圆圈(实际上是一个磁盘)来replacethumbImageUISlider 。 抗锯齿是默认应用的。

但是,我的iPhone 6的结果显然不好。 我可以清楚地看到像素,而不像抗锯齿closures,但比正常的UISlider的像素更多。

也许我做错了什么。 所以我的问题是,是否有一种方法来获得程序化的UISlider默认使用的相同的磁盘?

编辑:

以下是我如何创build磁盘:

 class func drawDisk(rgbValue:UInt32, rectForDisk: CGRect = CGRectMake(0.0, 0.0, 1.0, 1.0)) -> UIImage { let color = uicolorFromHex(rgbValue) UIGraphicsBeginImageContext(rectForDisk.size) let context = UIGraphicsGetCurrentContext() CGContextSetFillColorWithColor(context, color.CGColor) CGContextFillEllipseInRect(context, rectForDisk) let rectForCircle = CGRectMake(0.5, 0.5, rectForDisk.size.width - 1, rectForDisk.size.height - 1) CGContextSetLineWidth(context, 1.0) CGContextSetStrokeColorWithColor(context, UIColor.blackColor().CGColor) CGContextAddEllipseInRect(context, rectForCircle) CGContextStrokePath(context) let image = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() return image } 

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

这个函数等同于调用UIGraphicsBeginImageContextWithOptions函数,其opaque参数设置为NO ,比例因子为1.0

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

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

如果您指定的值为0.0 ,则缩放系数将设置为设备主屏幕的缩放系数。


所以,总之,你应该像这样创build你的图像上下文:

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