Я использую следующий код к получению изображений от спрайта. И это хорошо работает везде кроме 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 здесь ничего не заявляет.
Насколько я могу судить, CGImageCreateWithImageInRect поступит правильно. Что вам нужно изменить, так это инициализацию UIImage
Измените его на [UIImage imageWithCGImage: масштаб изображения: self.scale Ориентация: self. imageOrientation]
, и он должен работать нормально. (предполагается, что это категория на UIImage, которая, похоже, такова)