У меня есть несколько CALayers в моем интерфейсе, и я рисую изображения непосредственно в слоях, а не в imageViews.
Вот фрагмент:
UIImage *anImage = [UIImage imageNamed:@"anyImage"];
CGImageRef anImageRef = [anImage CGImage];
CALayer *aLayer = [CALayer layer];
CGFloat anImageWidth = CGImageGetWidth(anImageRef);
CGFloat anImageHeight = CGImageGetHeight(anImageRef);
CGRect layerFrame = CGRectMake(0,0,anImageWidth, anImageHeight);
[aLayer setLayerContents:(__bridge id)anImageRef];
[parentLayer addSublayer:aLayer];
Итак, моя проблема заключается в том, что я получаю несовместимые результаты с размером изображения. На устройстве сетчатки отображаемое изображение в два раза превышает ожидаемый размер (например, оно соответствует размеру в пикселях изображения @2x). В симуляторе в режиме сетчатки изображение, нарисованное на слое, имеет ожидаемый размер (где точки соответствуют пикселям изображения не сетчатки).
Вместо того, чтобы статически устанавливать размер или уменьшать размер вдвое (что устраняет проблему на устройстве, но нарушает совместимость с дисплеями без сетчатки), какое хорошее решение или обходной путь для этого сценария? Почему это происходит?