绘制文本并添加到 UIImage iOS 5/6

Posted

技术标签:

【中文标题】绘制文本并添加到 UIImage iOS 5/6【英文标题】:Draw text and add to a UIImage iOS 5/6 【发布时间】:2012-09-24 19:46:48 【问题描述】:

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

如何将 NSString 绘制到 UIImage?

我搜索了很多示例,但没有一个有效。 Xcode 只是给了我很多错误。

简单地说,我想将 NSString 绘制到 UIimage。 UIImage 应与预定义的 UIImageView 大小相同,并位于中心位置。

有什么想法吗?

【问题讨论】:

【参考方案1】:

我认为解决方案就在这里..我在我的一个应用程序中使用了这种方法 这里 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 imager 供您进一步使用..

例如...

[newimageviewObj setImage:img];

希望对你有帮助

【讨论】:

谢谢,我一回家就试试 :) 不能让它工作。猜我做错了什么。我在做:[self drawText:@"teest" inImage:testImage atPoint:iv.center]; testImage 是一个实例变量 UIImage *testImage。 iv 是我的 ImageView 而 lblText 是我认为的 UILabel。 @EspenBirk 我已经编辑了我的答案,请检查一下......告诉我你有什么...... @P R J 现在完美运行了!非常感谢 PRJ :D 我尝试像您描述的那样手动设置 CGPoint,并且正要问您如何在 UIImageView 中将其居中,但后来我看到您已经编写了它。如果我删除手动 CGPoint,它将位于我的 UIImageView 的中心。非常感谢:)【参考方案2】:

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

所以试试这个:

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

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

将 UILabel 添加为 UIImageView 的子视图。

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

【讨论】:

他询问绘图,没有什么能阻止他在创建的 UIImage 上绘制一些文本,然后将其添加到 UIImageView。 当然,你是对的,但我仍然会继续回答,因为它提供了一个合理的选择。 我现在找到了一个工作代码。但它看起来像是一张放大后的低分辨率图像。我尝试添加带有文本的子视图,但我不知道如何将该子视图添加到 uiimage 中【参考方案3】:

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

    将aUIImageView放在aView上; 在aView上添加一个UITextView; 从 aView 获取屏幕截图;

这可能工作正常。

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

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

【讨论】:

以上是关于绘制文本并添加到 UIImage iOS 5/6的主要内容,如果未能解决你的问题,请参考以下文章

将文本添加到 UIImage ......错误的地方

在 UIImage 上绘制文本

iOS:UIImage 缩放以填充 UIView

如何在 iOS 中在没有 UIImageView 的情况下在视图上绘制/绘制 UIIMage

将 NSString 绘制到 UIImage

如何在中心绘制文字到uiimage?