Мне действительно нужно эмулировать поведение drawInRect: fromRect: operation: фракция NSImage с использованием UIImage, и мне интересно, каков наилучший подход или (лучше), если кто-то уже сделал это и готов поделиться кодом.
Я пытался сделать это с помощью CGImageCreateWithImageInRect (см. Код в конце), но я не получаю ожидаемых результатов. Обратите внимание, что код на самом деле тестирует это на Mac (сейчас я не могу запустить все это на iPhone), поэтому у меня могут возникнуть проблемы с получением CGImage из NSImage
- (void)drawInRect:(CGRect)rect fromRect:(CGRect)fromRect alpha:(float)alpha {
CGContextRef context;
CGImageRef originalImageRef;
CGImageRef subimageRef;
#if ERMac
context=[[NSGraphicsContext currentContext] graphicsPort];
CGImageSourceRef source;
source = CGImageSourceCreateWithData((CFDataRef)[self TIFFRepresentation], NULL);
originalImageRef = CGImageSourceCreateImageAtIndex(source, 0, NULL);
CFRelease(source);
#else
context=UIGraphicsGetCurrentContext();
originalImageRef=CGImageRetain([self CGImage]);
#endif
subimageRef = CGImageCreateWithImageInRect (originalImageRef, fromRect);
CGContextDrawImage(context, rect, subimageRef);
if (subimageRef)
CGImageRelease(subimageRef);
if (originalImageRef)
CGImageRelease(originalImageRef);
}