Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why does my CGContext-drawn circle suck?

I have a custom table view cell that is intended to draw a circle like the iPhone’s Mail.app does:

Circles that don't suck

Instead, it draws like this:

Circles that suck

Here’s my code:

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

[grayColor set];

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

How can I make it not suck? :)

Edit: Ignore the fact that I omitted the code that draws the white background color.

What about it sucks? It doesn’t look close to, if not exactly like, the circle from Mail.

like image 957
Abraham Vegh Avatar asked Nov 30 '10 15:11

Abraham Vegh


2 Answers

I was able to solve this by changing the UIColor to the same color Apple uses, #E5E5E5:

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

And changing the line width from the default 1.0 to 2.0:

CGContextSetLineWidth(context, 2.0);

Tweaking the size was also necessary:

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

The final code looks like this:

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));

And outputs like this:

Circle that doesn't suck

like image 135
Abraham Vegh Avatar answered Sep 23 '22 15:09

Abraham Vegh


Try setting its alpha to 0.5 and making the borders thicker, for example, like this:

CGContextSetAlpha(context, 0.5);
like image 28
Knodel Avatar answered Sep 22 '22 15:09

Knodel