Objective c 以编程方式拍摄屏幕截图时,是否在UIImageView中查找标签的位置和大小?
我正在创建一个应用程序,允许用户将文本放置在他们的图像上,并将其保存到相机卷中。我实现这一点的方式是,在用户选择或拍摄照片后,它们会显示一个文本字段。然后,此文本字段将更改标签的文本。我在标签上放置了手势识别器,以便用户可以平移标签、捏缩缩放和旋转标签 在stackoverflow的帮助下,我成功地在图片上方拍摄了标签的屏幕截图。但是,当保存到“摄影机滚动”时,它无法识别图像顶部的标签大小或位置。任何帮助都将不胜感激 这里是我将图像保存到相机卷的地方Objective c 以编程方式拍摄屏幕截图时,是否在UIImageView中查找标签的位置和大小?,objective-c,xcode,uiimageview,uilabel,Objective C,Xcode,Uiimageview,Uilabel,我正在创建一个应用程序,允许用户将文本放置在他们的图像上,并将其保存到相机卷中。我实现这一点的方式是,在用户选择或拍摄照片后,它们会显示一个文本字段。然后,此文本字段将更改标签的文本。我在标签上放置了手势识别器,以便用户可以平移标签、捏缩缩放和旋转标签 在stackoverflow的帮助下,我成功地在图片上方拍摄了标签的屏幕截图。但是,当保存到“摄影机滚动”时,它无法识别图像顶部的标签大小或位置。任何帮助都将不胜感激 这里是我将图像保存到相机卷的地方 - (void)actionSheet:(U
- (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);
}
}
我不是100%确定,但您可以尝试使用
drawInRect:withFont:lineBreakMode:alignment:
而不是drawTextInRect
。苹果的文档说不要直接调用drawTextInRect
drawTextInRect:
在指定的矩形中绘制接收器的文本(或其阴影)
- (void)drawTextInRect:(CGRect)rect
参数
直肠
要在其中绘制文本的矩形
讨论
不应直接调用此方法。此方法只应
由要修改默认图形的子类覆盖
标签文本的行为
以下是文档说要使用的方法:
drawInRect:withFont:lineBreakMode:alignment:
在当前图形上下文中使用指定的
边框、字体和属性
- (CGSize)drawInRect:(CGRect)rect withFont:(UIFont *)font
lineBreakMode:(UILineBreakMode)lineBreakMode
alignment:(UITextAlignment)alignment
所以我想出来了。我将UIImage和UILabel放置在UIView中 然后我做了这个:
UIGraphicsBeginImageContextWithOptions(_containerView.bounds.size, _containerView.opaque, 0.0);
[_containerView.layer renderInContext:UIGraphicsGetCurrentContext()];
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
这使我能够处理平移、旋转和缩放。然后,我可以将此图像保存到相机卷或发送到FB、Twitter等。非常感谢您的回复。然而,我有点困惑,如何在我的actionsheet方法中实现这一点?我认为您只是简单地用drawInRect替换drawTextInRect。当然,您需要提供额外的参数。再说一次,我不知道这是否是确切的问题,但医生说不要直接给drawTextInRect打电话。谢谢。我会更仔细地研究,等我弄明白了再告诉你。