5

我有一个文本框,我希望将书面文本添加到 UIImage 中。

如何将 NSString 绘制到 UIImage?

我已经搜索过,发现了很多例子,但没有一个有效。Xcode 只是给了我很多错误。

简而言之,我想将 NSString 绘制到 UIimage。UIImage 应该与预定义的 UIImageView 大小相同,并放置在中心。

有任何想法吗?

4

3 回答 3

6

我认为解决方案就在这里..我在我的一个应用程序中使用了这种方法,这里 lbltext 是我标签的对象。此方法使用给定的文本创建新图像并返回带有文本的新图像对象。

-(UIImage *) drawText:(NSString*) text inImage:(UIImage*)image atPoint:(CGPoint)point 
{
    UIFont *font = lblText.font;
    UIGraphicsBeginImageContext(iv.frame.size);
    [image drawInRect:CGRectMake(0,0,iv.frame.size.width,iv.frame.size.height)];
    CGRect rect = CGRectMake(point.x,point.y,lblText.frame.size.width, lblText.frame.size.height);
    [lblText.textColor set];
    [text drawInRect:CGRectIntegral(rect) withFont:font]; 
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return newImage;
}

在您的以下评论中,您已经通过了 iv.center 作为一个点.. 像这样手动尝试

CGPoint point;
point.x=30; // dynamicaly just for example lblText.frame.origin.x;
point.y=40; //lblText.frame.origin.y;

你必须像这样调用上面的方法......

UIImage *img = [self drawText:@"Test String" inImage:originalImage atPoint:point];

在这里,img 是 UIImage 的另一个实例,用于存储带有文本的新图像......调用此方法后,使用 img 成像器供您进一步使用..

例如...

[newimageviewObj setImage:img];

我希望这能帮到您

于 2012-09-25T07:26:50.573 回答
1

UIImage 不是 UIView 的子视图,所以你不能给它添加子视图。NSString 也不是 UIView 的子视图。如果你想在屏幕上显示东西,它们应该继承自 UIView。

所以试试这个:

创建一个 UIImageView - 将其图像属性设置为您的 UIImage 实例。

创建一个 UILabel - 将其文本属性设置为您的 NSString。

将 UILabel 添加为 UIImageView 的子视图。

最后将您的 UIImageView 添加到您当前的视图控制器视图中。

于 2012-09-24T20:40:25.060 回答
0

Emm,这里有一些想法。我认为一种简单的方法是这样的:

  1. 把aUIImageView放在aView上;
  2. 在aView上添加aUITextView;
  3. 从 aView 获取屏幕截图;

这可能工作正常。

此外,这可能会带来屏幕截图可能不清楚的问题。然后,在 step1 和 step2 之后,我们可以通过 UIGraphics 获得新的图像。(在这里,我们已经知道文本应该在图像上的位置,这应该没问题。)

PS:有些图像可能没有像 CGImage 这样的属性,为此需要 CGImage。所以,改造它。

于 2013-11-21T05:40:01.290 回答