Nic*_*ico 2 core-graphics ios swift
我用CGContextFillEllipseInRectfrom 创建了一个圆圈CoreGraphic.
我正在使用这个圆圈(实际上是一个磁盘)来替换thumbImage它UISlider.默认情况下应用抗锯齿.
但是我的iPhone 6上的结果显然不太好.我可以清楚地看到像素,而不是关闭抗锯齿,但比普通UISlider的像素更多.
也许我做错了什么.所以我的问题是,有没有办法以编程方式获得与UISlider默认使用的相同的漂亮磁盘?
编辑:
以下是我创建磁盘的方法:
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
}
Run Code Online (Sandbox Code Playgroud)
问题是您在使用时正在创建非视网膜图形上下文UIGraphicsBeginImageContext,如文档中所述:
此函数等效于调用
UIGraphicsBeginImageContextWithOptionsopaque参数设置为的函数NO和比例因子1.0.
相反,您应该使用UIGraphicsBeginImageContextWithOptions创建图像上下文.NO如果您想要一个支持透明度的图像(与您现在隐式执行的操作相同),则可以继续传递opaque参数.
在大多数情况下,您可以传递0.0比例因子.这会将比例因子设置为设备主屏幕的比例因子.再次,如文档中所述:
如果指定值
0.0,则比例因子将设置为设备主屏幕的比例因子.
因此,简而言之,您应该像这样创建图像上下文:
UIGraphicsBeginImageContextWithOptions(rectForDisk.size, false, 0.0) // false for Swift
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
277 次 |
| 最近记录: |