绘制文本并添加到 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的主要内容,如果未能解决你的问题,请参考以下文章