Retina Display Core качество графики шрифта - PullRequest
17 голосов
/ 24 марта 2011

Пытаетесь понять, почему я получаю низкое качество рисования с помощью CGContextShowTextAtPoint? Смотрите прикрепленное изображение: img

Буква "W" нарисована с использованием CGContextShowTextAtPoint на CALayer и выглядит очень пикселизованной. Кнопка рядом с ней является стандартной кнопкой и выглядит в высоком разрешении, как и ожидалось. Я бы хотел, чтобы текст был в высоком разрешении.

enter image description here

Ответы [ 4 ]

36 голосов
/ 24 марта 2011

По умолчанию ваш CALayer не рендерит свой контент Quartz при более высоком разрешении экрана Retina.Вы можете включить это, используя код, подобный следующему:

if ([layer respondsToSelector:@selector(setContentsScale:)])
{
    layer.contentsScale = [[UIScreen mainScreen] scale];
}

Это повлияет не только на рендеринг текста, но и на весь ваш рисунок Quartz в CALayers, поэтому вам нужно будет сделать это для всех ваших слоев спользовательские кварц.

5 голосов
/ 24 марта 2011

Использование CGContextScaleCTM приносит вам какие-либо результаты?При работе с графическим контекстом, что-то вроде этого:

CGFloat scale = [[UIScreen mainScreen] scale];
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextScaleCTM(context, scale, scale);
2 голосов
/ 01 января 2016

Swift версия:

textLayer.contentsScale = UIScreen.mainScreen().scale

enter image description here

1 голос
/ 21 октября 2011

Группа функций управляет отображением шрифтов в Core Graphics:

  • CGContextSetAllowsAntialiasing
  • CGContextSetAllowsFontSmoothing
  • CGContextSetAllowsFontSubpixelPositioning
  • CGContextSetAllowsFontSubpixelQuantization
...