2

我正在开发一个应用程序,用户可以在图像上写一个标签(文本),并且必须将它与标签一起保存在 iphone 本地存储中。

(即)用户可以在图像上提供的位置添加任何文本,并且必须将其保存为带有他在 iphone 本地存储中编写的标签的图像

提前致谢

4

3 回答 3

1

您可以将 UILabel 作为子视图添加到 UIImageView 包含 UIImage 然后

UIGraphicsBeginImageContextWithOptions(UIImageView.bounds.size, UIImageView.opaque, 0.0);
[UIImageView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();

你得到你想要的 UIImage

或者

自己画就好

UIGraphicsBeginImageContext(imageSize);   

......
CGContextDrawImage(.....);
CGContextShowTextAtPoint(.....);
......

UIGraphicsEndImageContext();   
于 2012-04-19T06:18:59.303 回答
1

我认为您需要将您的 UIImageView 和您的 UILabel 添加为特定 UIView 的子视图(假设我们将此视图称为customView),然后使用

如何以编程方式截取 iPhone 的屏幕截图?

从修改后的链接中回答以使您更容易理解,如下所示:

重要:添加QuartzCore Framework和添加#import<QuartzCore/QuartzCore.h>

CGSize screenSize = [[UIScreen mainScreen] applicationFrame].size;
CGColorSpaceRef colorSpaceRef = CGColorSpaceCreateDeviceRGB(); 
CGContextRef ctx = CGBitmapContextCreate(nil, screenSize.width, screenSize.height, 8, 4*(int)screenSize.width, colorSpaceRef,
kCGImageAlphaPremultipliedLast);
CGContextTranslateCTM(ctx, 0.0, screenSize.height);
CGContextScaleCTM(ctx, 1.0, -1.0);

[(CALayer*)customView.layer renderInContext:ctx];

CGImageRef cgImage = CGBitmapContextCreateImage(ctx);
UIImage *image = [UIImage imageWithCGImage:cgImage];
CGImageRelease(cgImage);
CGContextRelease(ctx);  
[UIImageJPEGRepresentation(image, 1.0) writeToFile:filePath atomically:NO];

这里的filePath是您的应用程序的 Documents 目录文件路径。

您可以使用以下方法获取 NSDocuments 目录文件路径:

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
 NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSString *filePath = [documentsDirectory stringByAppendingPathComponent:@"savedImage.png"];

现在在您希望捕获视图的任何按钮或其他控件上执行此代码。

如果您需要更多帮助,请告诉我。

希望这对您有所帮助。

于 2012-04-19T06:20:34.593 回答
0

您需要捕获整个屏幕的屏幕截图才能在一张图像中同时包含两者。

此处提供 Apple 文档中的更多信息

于 2012-04-19T06:20:42.103 回答