Я пытаюсь вручную заставить iOS загрузить 2x версию файла образа файла. Я делаю это для экономии ресурсов - мне нужна эта графика для версии для iPhone, и я хочу использовать ее в масштабе 1: 1 для версии для iPad.
Для этого я не могу использовать initWithContentsOfFile, потому что iOS дает мне версию x1, даже если я добавляю x2 к имени файла. Вместо этого я использую этот код:
NSString *filename = [myImage filenameWithSuffix:@"@2x"];
UIImage *image = [[UIImage alloc] initWithCGImage:[[UIImage imageWithData:[NSData dataWithContentsOfFile:filename]] CGImage]
scale:1.0
orientation:UIImageOrientationUp];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
Это работает. Я на 100% уверен, что он подхватывает версию x2 (я изменил эту графику, чтобы убедиться).
Однако, когда он отображается на экране в правильном размере, он размыт. На самом деле, похоже, что версия x1 взорвалась до 200%, поэтому iOS делает что-то странное с моим образом.
Я убедился, что изображения отрисовываются на границах пикселей.
UPDATE:
Даже если я создаю другой файл изображения без суффикса x2 и использую initWithContentsOfFile для его загрузки, он все еще размыт. Так что это никак не связано с тем, как он загружается.
Что может привести к ухудшению изображения, кроме смещения пикселей?
Обратите внимание, что я сделал скриншот и сравнил изображение с оригиналом в Photoshop. Это точно такой же размер, поэтому масштабирование не проблема.