Это должно дать вам идею.Этот код, возможно, потребуется настроить или два, хотя.(Я признаю, что не запускал его.)
Ваш базовый слой UIImageView
может отображаться в контексте растрового изображения CoreGraphics (это, конечно, будет включать все подслои), который затем может обеспечитьвы с новым UIImage
.
UIImage *finalImage;
// Get the layer
CALayer *layer = [myImageView layer];
// Create a bitmap context and make it the current context
UIGraphicsBeginImageContext(layer.bounds.size);
// Get a reference to the context
CGContextRef ctx = UIGraphicsGetCurrentContext();
// Ask the layer to draw itself
[layer drawInContext:ctx];
// Then ask the context itself for the image
finalImage = UIGraphicsGetImageFromCurrentImageContext();
// Finally, pop the context off the stack
UIGraphicsEndImageContext();
Все эти функции описаны в Справочник функций UIKit .
Существует также несколько более сложный способ, который дает вамбольший контроль над такими вещами, как цвет, который включает в себя создание CGBitmapContext
и получение CGImageRef
, из которого вы снова можете получить UIImage
.Это описано в Руководстве по программированию в Quartz 2D, раздел «Создание контекста растровой графики» .