Как использование CGImageCreateWithImageInRect для iPhone 4 (HD)?

Я использую следующий код к получению изображений от спрайта. И это хорошо работает везде кроме iPhone 4 (версия HD).

- (UIImage *)croppedImage:(CGRect)rect {
    CGImageRef image = CGImageCreateWithImageInRect([self CGImage], rect);
    UIImage *result = [UIImage imageWithCGImage:image];
    CGImageRelease(image);
    return result;
}

iPhone 4 автоматически загружает версию HD изображения (sprite@2x.png) вместо этого sprite.png. Исходное изображение имеет масштаб 2, но получающееся изображение имеет масштаб 1 и неправильный размер.

Как обработать это поведение, принимающее во внимание различные масштабы для iPhone 3G [s] и iPhone 4?

Я прочитал этот документ, но об использовании CGImageCreateWithImageInRect здесь ничего не заявляет.

19
задан Victor 1 July 2010 в 12:30
поделиться

1 ответ

Насколько я могу судить, CGImageCreateWithImageInRect поступит правильно. Что вам нужно изменить, так это инициализацию UIImage

http://developer.apple.com/iphone/library/documentation/uikit/reference/UIImage_Class/Reference/Reference.html#//apple_ref/occ/clm/UIImage/ imageWithCGImage: масштаб: ориентация :

Измените его на [UIImage imageWithCGImage: масштаб изображения: self.scale Ориентация: self. imageOrientation] , и он должен работать нормально. (предполагается, что это категория на UIImage, которая, похоже, такова)

32
ответ дан 30 November 2019 в 02:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: