1

我正在创建一个应用程序,允许用户在他们的图像上放置文本,并将它们保存到相机胶卷。我实现这一点的方式是在用户选择或拍照后,他们会看到一个文本字段。然后,此文本字段会更改标签的文本。我在标签上放置了手势识别器,以便用户可以平移标签、捏合缩放和旋转标签。

在 stackoverflow 的帮助下,我已经能够成功截取图像顶部标签的屏幕截图。但是,当保存到相机胶卷时,它无法识别图像顶部的标签大小或位置。任何帮助将不胜感激。

这是我将图像保存到相机胶卷的地方

- (void)actionSheet:(UIActionSheet *)actionSheet clickedButtonAtIndex:(NSInteger)buttonIndex
{
     if (buttonIndex == 0)
{

    UIGraphicsBeginImageContext(_image.size);


    [_image drawInRect:CGRectMake(0, 0, _image.size.width, _image.size.height)];

    [_textLabel drawTextInRect:CGRectMake((_image.size.width - _textLabel.frame.size.width)/2, (_image.size.height - _textLabel.frame.size.height)/2, _textLabel.frame.size.width, _textLabel.frame.size.height)];

    UIImage *resultingImage = UIGraphicsGetImageFromCurrentImageContext();

    UIGraphicsEndImageContext();

    UIAlertView *message = [[UIAlertView alloc] initWithTitle:@"WRDIT"
                                                      message:@"Your image has been saved to the Camera Roll"
                                                     delegate:self
                                            cancelButtonTitle:nil
                                            otherButtonTitles:@"OK", nil];

    [message show];

    UIImageWriteToSavedPhotosAlbum(resultingImage, nil, nil, nil);
}
}
4

2 回答 2

0

我不是 100% 确定,但您可以尝试使用drawInRect:withFont:lineBreakMode:alignment:而不是drawTextInRect. 苹果文档说不要直接打电话drawTextInRect

绘制文本矩形:

在指定的矩形中绘制接收者的文本(或其阴影)。

- (void)drawTextInRect:(CGRect)rect

参数

矩形

在其中绘制文本的矩形。

讨论

您不应直接调用此方法。此方法只能被想要修改标签文本的默认绘制行为的子类覆盖。

这是文档说要使用的方法:

drawInRect:withFont:lineBreakMode:alignment:

使用指定的边界矩形、字体和属性在当前图形上下文中绘制字符串。

- (CGSize)drawInRect:(CGRect)rect withFont:(UIFont *)font 
                             lineBreakMode:(UILineBreakMode)lineBreakMode
                                 alignment:(UITextAlignment)alignment
于 2013-01-13T18:14:04.987 回答
0

所以我想通了。我将 UIImage 和 UILabel 放在 UIView 中。

然后我这样做了:

 UIGraphicsBeginImageContextWithOptions(_containerView.bounds.size, _containerView.opaque, 0.0);

    [_containerView.layer renderInContext:UIGraphicsGetCurrentContext()];

    UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

这使我能够处理平移、旋转和缩放。然后我可以将此图像保存到相机胶卷或发送到 FB、Twitter 等。

于 2013-01-14T22:23:08.403 回答