【发布时间】:2012-09-24 19:46:48
【问题描述】:
我有一个文本框,我希望将书面文本添加到 UIImage 中。
如何将 NSString 绘制到 UIImage?
我搜索了很多示例,但没有一个有效。 Xcode 只是给了我很多错误。
简单地说,我想将 NSString 绘制到 UIimage。 UIImage 应与预定义的 UIImageView 大小相同,并位于中心位置。
有什么想法吗?
【问题讨论】:
标签: ios uiimage core-graphics draw
我有一个文本框,我希望将书面文本添加到 UIImage 中。
如何将 NSString 绘制到 UIImage?
我搜索了很多示例,但没有一个有效。 Xcode 只是给了我很多错误。
简单地说,我想将 NSString 绘制到 UIimage。 UIImage 应与预定义的 UIImageView 大小相同,并位于中心位置。
有什么想法吗?
【问题讨论】:
标签: ios uiimage core-graphics draw
我认为解决方案就在这里..我在我的一个应用程序中使用了这种方法 这里 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];
希望对你有帮助
【讨论】:
UIImage 不是 UIView 的子视图,所以你不能给它添加子视图。 NSString 也不是 UIView 的子视图。如果你想在屏幕上显示东西,它们应该继承自 UIView。
所以试试这个:
创建一个 UIImageView - 将其图像属性设置为您的 UIImage 实例。
创建一个 UILabel - 将其文本属性设置为您的 NSString。
将 UILabel 添加为 UIImageView 的子视图。
最后将您的 UIImageView 添加到您当前的视图控制器视图中。
【讨论】:
Emm,这里有一些想法。 我认为一种简单的方法是这样的:
这可能工作正常。
此外,这可能会带来屏幕截图可能不清楚的问题。 然后,在 step1 和 step2 之后,我们可以通过 UIGraphics 获得新的图像。 (在这里,我们已经知道文本应该在图像上的位置,这应该没问题。)
PS:有些图像可能没有像 CGImage 这样的属性,因此需要 CGImage。所以,改造一下吧。
【讨论】: