С тех пор как на сетчатке появилось изображение, этот код рисования внезапно перестал работать. Нарисованное изображение слегка смещено, чем было раньше, и выглядит несколько растянутым.
Я рисую что-то в -drawRect: метод подкласса UIControl. Я понял, что текущий масштаб внутри этого UIControl действительно равен 2,0. Этот код получает CGImage из UIImage, который, вероятно, ничего не знает о масштабе. Он передается в качестве параметра для метода, который также принимает некоторые значения точек прямо сейчас.
CGContextDrawImage(context, CGRectMake(drawingRect.origin.x, drawingRect.origin.y, img.size.width, img.size.height), [img CGImage]);
Примечание: DrawingRect в пунктах. img.size.width внутри NSLog действительно выводит правильное значение в точках, в то время как [img CGImage] выводит изображение @ 2x для отображения сетчатки. Я сделал проверку, чтобы проверить это:
NSLog(@"image height = %f (CGImage = %d)", img.size.height, CGImageGetHeight([img CGImage]));
Вывод на консоль: image height = 31.000000 (CGImage = 62)
Как бы я справился с изображением @ 2x здесь? Должен ли я умножать каждое значение на шкалу вручную? Но это также может испортить фактический видимый прямоугольник на экране, или нет?