Вы можете просто выровнять их вместе в одном UIView (я думаю, что даже за кадром, но я еще не проверил) - и затем просто преобразовать этот UIView в UIImage, используя QuartzCode:
UIGraphicsBeginImageContext(myView.bounds.size);
[myView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
Затем преобразуйте это в формат, такой как PNG, например:
NSData *imageData = UIImagePNGRepresentation(image);
Тогда отправка не должна быть слишком сложной.
EDIT
Вот расширенный пример, который вы также можете увидеть для 3 изображений - вы, конечно, можете использовать Interface Builder и Outlets вместо того, чтобы писать все это - но вы можете скопировать и вставить это, чтобы попробовать:
UIImageView *imgView1, *imgView2, *imgView3;
imgView1 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image1"]];
imgView2 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image2"]];
imgView3 = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"image3"]];
imgView1.frame = CGRectMake(0, 0, 50, 50);
imgView2.frame = CGRectMake(50, 50, 100, 100);
imgView3.frame = CGRectMake(100, 100, 200, 200);
[referenceView addSubview:imgView1];
[referenceView addSubview:imgView2];
[referenceView addSubview:imgView3];
UIGraphicsBeginImageContext(referenceView.bounds.size);
[referenceView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *finalImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
resultView = [[UIImageView alloc] initWithImage:finalImage];
resultView.frame = CGRectMake(0, 0, 320, 480);
[self.view addSubview:resultView];
referenceView.hidden = YES;
Примечание
Я проверил, и UIView должен быть отображаемым / видимым во время вызова renderInContext (он может быть вне экрана, но не может быть скрыт или альфа = 0, потому что тогда он будет сделан невидимым). Так что либо выведите его за экран, либо сразу спрячьте после рисования