Dibuja un círculo simple uiimage

Intento hacer un UII de 20×20 con un simple círculo azul. Intento con esta function, pero el resultado es un círculo azul en un cuadrado negro. ¿Cómo elimino el cuadrado negro alnetworkingedor del círculo?

Función:

+ (UIImage *)blueCircle { static UIImage *blueCircle = nil; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ UIGraphicsBeginImageContextWithOptions(CGSizeMake(20.f, 20.f), YES, 0.0f); CGContextRef ctx = UIGraphicsGetCurrentContext(); CGContextSaveGState(ctx); CGRect rect = CGRectMake(0, 0, 20, 20); CGContextSetFillColorWithColor(ctx, [UIColor cyanColor].CGColor); CGContextFillEllipseInRect(ctx, rect); CGContextRestoreGState(ctx); blueCircle = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); }); return blueCircle; } 

resultado actual: introduzca la descripción de la imagen aquí

UIGraphicsBeginImageContextWithOptions(..., NO, ...) include un canal alfa en su bitmap: UIGraphicsBeginImageContextWithOptions(..., NO, ...) si desea ver qué hay detrás de las esquinas.

¡Gracias por la Q & A! Código Swift de la siguiente manera:

 extension UIImage { class func circle(diameter: CGFloat, color: UIColor) -> UIImage { UIGraphicsBeginImageContextWithOptions(CGSizeMake(diameter, diameter), false, 0) let ctx = UIGraphicsGetCurrentContext() CGContextSaveGState(ctx) let rect = CGRectMake(0, 0, diameter, diameter) CGContextSetFillColorWithColor(ctx, color.CGColor) CGContextFillEllipseInRect(ctx, rect) CGContextRestoreGState(ctx) let img = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() return img } } 

Versión Swift 3 proporcionada por Schemetrical:

 extension UIImage { class func circle(diameter: CGFloat, color: UIColor) -> UIImage { UIGraphicsBeginImageContextWithOptions(CGSize(width: diameter, height: diameter), false, 0) let ctx = UIGraphicsGetCurrentContext()! ctx.saveGState() let rect = CGRect(x: 0, y: 0, width: diameter, height: diameter) ctx.setFillColor(color.cgColor) ctx.fillEllipse(in: rect) ctx.restreGState() let img = UIGraphicsGetImageFromCurrentImageContext()! UIGraphicsEndImageContext() return img } } 

Swift 3:

 extension UIImage { class func circle(diameter: CGFloat, color: UIColor) -> UIImage { UIGraphicsBeginImageContextWithOptions(CGSize(width: diameter, height: diameter), false, 0) let ctx = UIGraphicsGetCurrentContext()! ctx.saveGState() let rect = CGRect(x: 0, y: 0, width: diameter, height: diameter) ctx.setFillColor(color.cgColor) ctx.fillEllipse(in: rect) ctx.restreGState() let img = UIGraphicsGetImageFromCurrentImageContext()! UIGraphicsEndImageContext() return img } } 

La autocorrección rápida es divina. Gracias a Valentin.

Muestra Xamarin.iOS:

  public static UIImage CircleImage(nfloat diameter, UIColor color, bool opaque = false) { var rect = new CGRect(0, 0, diameter, diameter); UIGraphics.BeginImageContextWithOptions(rect.Size, opaque, 0); var ctx = UIGraphics.GetCurrentContext(); ctx.SaveState(); ctx.SetFillColor(color.CGColor); ctx.FillEllipseInRect(rect); ctx.RestoreState(); var img = UIGraphics.GetImageFromCurrentImageContext(); UIGraphics.EndImageContext(); return img; } 

Prueba esto

 UIGraphicsBeginImageContextWithOptions(imageView.bounds.size, NO, 1.0); 
    Intereting Posts