Xcode: dibuja un círculo alnetworkingedor del centro

Me preguntaba cómo dibujar un círculo alnetworkingedor de un punto tomado del posicionamiento de un control.

Esto no funciona como se esperaba

CGContextRef contextRef = UIGraphicsGetCurrentContext(); CGContextSetLineWidth(contextRef, 2.0); CGContextSetRGBFillColor(contextRef, 0, 0, 1.0, 1.0); CGContextSetRGBStrokeColor(contextRef, 0, 0, 1.0, 1.0); CGRect circlePoint = (CGRectMake(self.frame.size.width / 2, self.frame.size.height / 2, 10.0, 10.0)); CGContextFillEllipseInRect(contextRef, circlePoint); 

Creo que es bastante fácil dibujar un círculo con UIBezierPath. Todo lo que necesita hacer es subclass UIView y crear UIBezierPath. He creado un ejemplo con UIBezierPath:

Cree una subclass de UIView llamada CirecleView. Agregar el siguiente código:

 #import "CircleView.h" @implementation CircleView - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { // Initialization code } return self; } - (void)drawRect:(CGRect)rect { CGFloat rectX = self.frame.size.width / 2; CGFloat rectY = self.frame.size.height / 2; CGFloat width = 100; CGFloat height = 100; CGFloat centerX = rectX - width/2; CGFloat centerY = rectY - height/2; UIBezierPath *bezierPath = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(centerX, centerY, width, height)]; [[UIColor blackColor] set]; [bezierPath stroke]; } @end 

Cambie la class de vista de su controller a CircleView. Por favor vea la foto a continuación.

introduzca la descripción de la imagen aquí

Eso es. Ejecute su código para presentar la vista de su controller. Lo que sigue es el resultado:

introduzca la descripción de la imagen aquí

Puedes bajar un ejemplo de código desde aquí

Solo necesitas traducir al punto primero

 cgContextRef.translateBy(x:circlePoint.x, y:circlePoint.y) 

Tenga en count que es Swift 3, puede ser diferente en otros idiomas, solo busque "translate cgcontext"