После некоторого поиска я нашел вопрос, похожий на мой, но в Swift
. Я перевел это на Objective-C
и все:
+ (NSImage *)image:(NSImage *)originalImage scaledToSize:(NSSize)desiredSize {
NSImage *newImage = [[NSImage alloc] initWithSize:desiredSize];
[newImage lockFocus];
[originalImage drawInRect:NSMakeRect(0, 0, desiredSize.width, desiredSize.height) fromRect:NSMakeRect(0, 0, imageWidth, imageHeight) operation:NSCompositingOperationSourceOver fraction:1];
[newImage unlockFocus];
newImage.size = desiredSize;
return [[NSImage alloc] initWithData:[newImage TIFFRepresentation]];
}
Но есть еще проблема: если desiredSize = NSMakeSize(50,50);
, он вернет 50 на 50 пикселей. Это должно быть что-то с масштабом экрана, я думаю.
Swift
код, который я перевел: