Рисование с помощью Core Graphics выглядит короче на дисплее Retina - PullRequest
4 голосов
/ 13 марта 2011

У меня есть UIView, который рисует круг изнутри drawRect: rect. После прочтения информации о разработчике Apple на дисплее Retina показалось, что использование Core Graphics означает, что рисунки автоматически получат преимущества более высокого разрешения. Этот простой круг, однако, выглядит довольно коротким по сравнению с аналогичным кругом на значке значка. Очевидно, я сравниваю это с чем-то, что имеет глянец и тень, но я думаю, что совершенно очевидно, что мое тоже не рисуется. Я попытался сделать скриншоты значка с изображением яблока и моего круга, и они выглядят примерно одинаково на моем Mac - разница очевидна при просмотре каждого на телефоне. Есть что-то простое, что мне здесь не хватает?

Это код рисования, который я использую в drawRect: rect

UIBezierPath* aPath = [UIBezierPath bezierPathWithOvalInRect:
                       CGRectMake(0, 0, 22, 22)];

[[UIColor whiteColor] setStroke];
[[UIColor redColor] setFill];

CGContextRef aRef = UIGraphicsGetCurrentContext();
CGContextTranslateCTM(aRef, 10, 10);
aPath.lineWidth = 3;
[aPath fill];
[aPath stroke];

Спасибо за любую помощь, Rob

1 Ответ

10 голосов
/ 13 марта 2011

Упс, сначала нужно сглаживание:

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetShouldAntialias(context, YES);

Я добавил это перед рисованием, затем установил его на NO и сразу же нарисовал еще один круг.Два кружка рядом показывают, что это была проблема.

...