您可以在一个 UIView 中将它们对齐(我认为甚至在屏幕外,但我还没有检查) - 然后使用 QuartzCode 将该 UIView 转换为 UIImage:
UIGraphicsBeginImageContext(myView.bounds.size);
[myView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
然后将其转换为格式 - 例如 PNG:
NSData *imageData = UIImagePNGRepresentation(image);
那么发送应该不会太难。
编辑
这是一个扩展示例,您也可以看到 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;
注意
我已经检查过,在您调用 renderInContext 时 UIView 必须是可绘制/可见的(它可以在屏幕外,但不能隐藏或 alpha=0,因为那样它将被渲染为不可见)。所以要么把它放在屏幕外,要么在绘制后立即隐藏它