2010-11-30 10 views
9

que tienen una visión celda de la tabla personalizada que se pretende dibujar un círculo como Mail.app del iPhone no:¿Por qué mi círculo dibujado por CGContext chupa?

Circles that don't suck

su lugar, se dibuja como esto:

Circles that suck

Aquí es mi código:

CGContextRef context = UIGraphicsGetCurrentContext(); 
UIColor *grayColor = [UIColor grayColor]; 

[grayColor set]; 

CGContextStrokeEllipseInRect(context, CGRectMake(9, 10, 23, 23)); 

Ho ¿Puedo hacerlo no apestar? :)

Editar: Ignore el hecho de que omití el código que dibuja el fondo de color blanco.

¿Qué hay de eso es una mierda? No se ve cerca, si no exactamente como, el círculo de Correo.

+5

Lo que chupa al respecto? Antialiasing/rendering? El ancho/color? Algunos detalles te ayudarán a obtener una mejor respuesta. –

+0

Editado para indicar por qué apesta, aunque pensé que sería evidente por las imágenes. –

+1

Sus imágenes no se estaban cargando antes, abrahamvegh. Pero ellos son ahora. –

Respuesta

18

yo era capaz de resolver esto cambiando la UIColor al mismo color utiliza Apple, #E5E5E5:

[UIColor colorWithRed: 0.8980392157 green: 0.8980392157 blue: 0.8980392157 alpha: 1.0] 

Y cambiando el ancho de línea desde el valor predeterminado 1.0-2.0:

CGContextSetLineWidth(context, 2.0); 

Afinando el tamaño también era necesario:

CGContextStrokeEllipseInRect(context, CGRectMake(10, 11, 21, 21)); 

El código final es el siguiente:

CGContextRef context = UIGraphicsGetCurrentContext(); 
UIColor *grayColor = [UIColor colorWithRed: 0.8980392157 green: 0.8980392157 blue: 0.8980392157 alpha: 1.0]; 

[grayColor set]; 

CGContextSetLineWidth(context, 2.0); 
CGContextStrokeEllipseInRect(context, CGRectMake(10, 11, 21, 21)); 

y salidas como esta:

Circle that doesn't suck

+2

Tu respuesta me recordó y me inspiró a experimentar con los literales hexadecimales de coma flotante de C. Puede representar los valores del componente de color como, por ejemplo, '0xE5p + 0/0xFFp + 0'. –

5

intente configurar su alfa a 0.5 y hacer las fronteras más grueso, por ejemplo, así:

CGContextSetAlpha(context, 0.5); 
+0

y es un poco más pequeño, para que coincida exactamente con el otro círculo. – Randy

+0

Configurar el alfa a '0.5' mejora la situación del color, pero probablemente lo mejoraré obteniendo una representación UIColor real de ese tono de gris en particular, para mantener el esfuerzo de cálculo más bajo. ¿Qué llamada CG uso para hacer el borde más grueso? –

+3

use CGContextSetLineWidth (CGContextRef c, CGFloat width); –

Cuestiones relacionadas