Как настроить контекст Quartz 2D для учета отображения Retina? - PullRequest
4 голосов
/ 09 октября 2010

У меня есть Quartz 2D игра, которая рисует прямо в контексте. По этой причине мне приходится адаптировать код так, чтобы он масштабировался, если это уместно для дисплея Retina. Я делаю это, используя следующий код:

- (CGFloat) displayScale
{
if ([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) {

    return [[UIScreen mainScreen]scale];

}

else  

{
    return 1.0;
}

}

Сейчас я борюсь с тем, как манипулировать моим контекстом Кварца в моем методе -drawRect: для умножения на возвращенное значение scale. Кто-нибудь может мне помочь с этим кодом?

1 Ответ

10 голосов
/ 09 октября 2010

Вам не нужно ничего менять в своем Кварцевом коде, чтобы учесть отображение Retina.Если на вашем UIView или CALayer задан правильный contentScaleFactor с использованием кода, подобного следующему:

if ([view respondsToSelector:@selector(setContentScaleFactor:)])
{
    view.contentScaleFactor = [[UIScreen mainScreen] scale];
}

2-D чертеж, который вы делаете в -drawRect: или -drawInContext:, будет автоматически визуализироваться дляRetina Display.Помните, что координаты, которые вы указываете для рисунка Кварца, будут в точках, а не в пикселях.С масштабным коэффициентом 2,0 для дисплея Retina 1 точка = 2 пикселя.

Дополнительные сведения см. В разделе « Обновление пользовательского кода чертежа » в Руководстве по программированию приложений iOS.

...