Нарисуйте выбранные области UIImage
Вопрос
У меня есть UIImage, содержащий изображение с целой кучей небольших изображений на изображении (по сути, полоса изображений, содержащая спрайты).Я хотел бы нарисовать один спрайт в области моего UIView.
Кажется, я не могу найти способ нарисовать в представлении только часть UIImage.Есть ли метод, который делает это?
Решение
Я думаю, что вы можете искать / TP30001066-CH212-SW1 "rel =" nofollow noreferrer "> CGImageCreateWithImageInRect () . Вы можете получить CGImage
из UIImage
с помощью одноименное свойство .
РЕДАКТИРОВАТЬ: еще один вариант, который существует в 2014 году, а не в 2009 году - это SpriteKit . В зависимости от того, что вы делаете, вам нужен спрайт-лист, это может быть полезно.
Другие советы
Я написал UIImage
категория для работы с листами спрайтов.Проверьте это, это может быть полезно http://reecon.wordpress.com/2011/11/19/uiimage-sprite-additions-objective-c/
Как отмечалось ранее, эта категория основана на CGImageCreateWithImageInRect()
но делает процесс извлечения спрайтов из одного листа спрайтов далеко более удобно и Быстрее.
Ссылка на страницу git-хаба:https://github.com/r3econ/UIImage-Sprite-Additions
Вы также можете установить с помощью какао-стручков.
Да, конечно, вы можете с Quartz.
Здесь есть учебник, который показывает, как взять UIImage и замаскировать его часть.
http://iosdevelopertips.com/cocoa/how-to -mask-ан-image.html р>
Вот код с этой страницы (если он почему-то не работает)
- (UIImage*) maskImage:(UIImage *)image withMask:(UIImage *)maskImage {
CGImageRef maskRef = maskImage.CGImage;
CGImageRef mask = CGImageMaskCreate(CGImageGetWidth(maskRef),
CGImageGetHeight(maskRef),
CGImageGetBitsPerComponent(maskRef),
CGImageGetBitsPerPixel(maskRef),
CGImageGetBytesPerRow(maskRef),
CGImageGetDataProvider(maskRef), NULL, false);
CGImageRef masked = CGImageCreateWithMask([image CGImage], mask);
return [UIImage imageWithCGImage:masked];
}