我正在创建一个应用程序,允许用户在其图像上放置文本,并将其保存到相机胶卷。我实现这一点的方式是在用户选择或拍照后,然后呈现文本字段。然后,此文本字段将更改标签的文本。我在标签上放置了手势识别器,以便用户可以平移标签,捏缩放以及旋转标签。
借助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);
}
}
答案 0 :(得分:0)
我不是100%肯定,但您可以尝试使用drawInRect:withFont:lineBreakMode:alignment:
代替drawTextInRect
。 Apple文档说不要直接致电drawTextInRect
。
drawTextInRect:
在指定的矩形中绘制接收者的文本(或其阴影)。
- (void)drawTextInRect:(CGRect)rect
参数
RECT
用于绘制文本的矩形。
讨论
您不应该直接调用此方法。此方法应该只是 被想要修改默认图形的子类覆盖 标签文本的行为。
以下是文档说使用的方法:
drawInRect:withFont:lineBreakMode:alignment:
使用指定的方法在当前图形上下文中绘制字符串 边界矩形,字体和属性。
- (CGSize)drawInRect:(CGRect)rect withFont:(UIFont *)font lineBreakMode:(UILineBreakMode)lineBreakMode alignment:(UITextAlignment)alignment
答案 1 :(得分:0)
所以我明白了。我将UIImage和UILabel放在UIView中。
然后我这样做了:
UIGraphicsBeginImageContextWithOptions(_containerView.bounds.size, _containerView.opaque, 0.0);
[_containerView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
这允许我处理平移,旋转和缩放。然后我可以将此图像保存到相机胶卷或将其发送到FB,Twitter等等。