【发布时间】:2012-11-20 17:36:58
【问题描述】:
我正在 Xcode 4.3 上创建本机应用程序并部署到目标 iOS 5。该应用程序基本上是一个贺卡创建者。我无法弄清楚如何从应用内保存屏幕的一部分。
我想做的是这样的:
我向用户提供了一个按钮,上面写着“电子邮件”。当他们点击按钮时,应用程序应该将他们的卡片“保存”为图像,然后将其“粘贴”到电子邮件正文中。
这与本网站上的其他答案不同的原因是我要保存的区域由 4 个“元素”组成。有一个背景图形是倾斜的卡片背景,然后是一个文本字段,用户可以在其中输入消息,然后旁边是一个图片区域,他们可以选择自己的图片放在卡片上。
这是我正在谈论的照片: http://marklopezdesigns.com/mydownloadz!/screenshotCard3.png
如何保存这些“合成”高分辨率?
然后我如何将其放入电子邮件正文中?
我问如何“保存”它的原因是因为我希望能够为用户提供另一个按钮,上面写着“保存到相机胶卷”和“作为消息发送”。我想如果我能理解如何将这个高分辨率保存到变量中,那么我应该关闭并运行。
提前感谢您的帮助。
========
下面是解决方法
======== ......所以经过一番摆弄。终于得到了我想要的。这是我的方法中的代码库,在触摸“保存到相册”按钮时会触发:
- (IBAction)savePhoto{
CGRect rect;
rect = CGRectMake(11,50 ,305, 262);
UIView *cardViewer = [[UIView alloc] initWithFrame:rect];
UIGraphicsBeginImageContext(cardViewer.bounds.size);
//make view background transparent
cardViewer.backgroundColor = [UIColor colorWithWhite:0.0 alpha:0.0];
cardViewer.opaque = NO;
//stuff items into a subview for capturing
[self.view addSubview:cardViewer];
[cardViewer addSubview:self.tiltedCard];
[cardViewer addSubview:self.bigCardView];
[cardViewer addSubview:self.cardWords];
[cardViewer addSubview:self.photoView];
[cardViewer.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
CGImageRef imageRef = CGImageCreateWithImageInRect([viewImage CGImage], rect);
UIImage *img = [UIImage imageWithCGImage:imageRef];
CGImageRelease(imageRef);
UIImageWriteToSavedPhotosAlbum(img, nil, nil, nil);
//put everything back where it belongs
[self.view addSubview:self.tiltedCard];
[self.view addSubview:self.bigCardView];
[self.view addSubview:self.cardWords];
[self.view addSubview:self.photoView];
[cardViewer removeFromSuperview];
}
【问题讨论】:
-
那么你想使用 Xcode 还是使用你的应用来截屏?如果不是 Xcode,请不要假装是。
-
我很确定 OP 希望它作为应用程序的一部分以编程方式完成。
-
是的,我希望这可以作为应用程序的一部分以编程方式完成。我为用户提供了一个按钮,上面写着“通过电子邮件发送这张卡片”,当发生这种情况时,我想捕获应用程序屏幕的一个区域并将其放在电子邮件正文中。