我想在UIImage
中绘制NSString
变量的内容,但我绝对不知道如何执行此操作。我需要编写一个方法,该方法将接收NSString
作为参数,并返回一个UIImage
及其中的文本。如何使用NSString绘图功能从文本创建UIImage
36
A
回答
88
结束它你可以试试这个:(更新为iOS 4)
-(UIImage *)imageFromText:(NSString *)text
{
// set the font type and size
UIFont *font = [UIFont systemFontOfSize:20.0];
CGSize size = [text sizeWithFont:font];
// check if UIGraphicsBeginImageContextWithOptions is available (iOS is 4.0+)
if (UIGraphicsBeginImageContextWithOptions != NULL)
UIGraphicsBeginImageContextWithOptions(size,NO,0.0);
else
// iOS is < 4.0
UIGraphicsBeginImageContext(size);
// optional: add a shadow, to avoid clipping the shadow you should make the context size bigger
//
// CGContextRef ctx = UIGraphicsGetCurrentContext();
// CGContextSetShadowWithColor(ctx, CGSizeMake(1.0, 1.0), 5.0, [[UIColor grayColor] CGColor]);
// draw in context, you can use also drawInRect:withFont:
[text drawAtPoint:CGPointMake(0.0, 0.0) withFont:font];
// transfer image
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
要叫它:
UIImage *image = [self imageFromText:@"This is a text"];
2
开始的图像内容与UIGraphicsBeginImageContext
,画它,与UIGraphicsGetImageFromCurrentImageContext
得到的图像,与UIGraphicsEndImageContext
13
添加斯威夫特版本,还为您提供了更多的选择:
class func sizeOfAttributeString(str: NSAttributedString, maxWidth: CGFloat) -> CGSize {
let size = str.boundingRectWithSize(CGSizeMake(maxWidth, 1000), options:(NSStringDrawingOptions.UsesLineFragmentOrigin), context:nil).size
return size
}
class func imageFromText(text:NSString, font:UIFont, maxWidth:CGFloat, color:UIColor) -> UIImage {
let paragraph = NSMutableParagraphStyle()
paragraph.lineBreakMode = NSLineBreakMode.ByWordWrapping
paragraph.alignment = .Center // potentially this can be an input param too, but i guess in most use cases we want center align
let attributedString = NSAttributedString(string: text, attributes: [NSFontAttributeName: font, NSForegroundColorAttributeName: color, NSParagraphStyleAttributeName:paragraph])
let size = sizeOfAttributeString(attributedString, maxWidth: maxWidth)
UIGraphicsBeginImageContextWithOptions(size, false , 0.0)
attributedString.drawInRect(CGRectMake(0, 0, size.width, size.height))
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image
}
0
雨燕3.1
func sizeOfAttributeString(str: NSAttributedString, maxWidth: CGFloat) -> CGSize {
let size = str.boundingRect(with: CGSize(width: maxWidth, height: 1000), options:(NSStringDrawingOptions.usesLineFragmentOrigin), context:nil).size
return size
}
func imageFromText(text:NSString, font:UIFont, maxWidth:CGFloat, color:UIColor) -> UIImage {
let paragraph = NSMutableParagraphStyle()
paragraph.lineBreakMode = NSLineBreakMode.byWordWrapping
paragraph.alignment = .center
let attributedString = NSAttributedString(string: text as String, attributes: [NSFontAttributeName: font, NSForegroundColorAttributeName: color, NSParagraphStyleAttributeName:paragraph])
let size = sizeOfAttributeString(str: attributedString, maxWidth: maxWidth)
UIGraphicsBeginImageContextWithOptions(size, false , 0.0)
attributedString.draw(in: CGRect(x: 0, y: 0, width: size.width, height: size.height))
let image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return image!
}
幸得鲍蕾为美丽的答案。
相关问题
- 1. 从NSString创建一个UIImage
- 2. 创建从PNG的OpenGL绘图的UIImage
- 3. 将NSString绘制为UIImage
- 4. 如何在图像中创建圆圈....不使用绘图功能?
- 5. ASP.NET:如何使用文本框创建搜索功能?
- 6. 我如何绘制一个图像到另一个UIImage来创建一个UIImage
- 7. 从XIB创建UIImage如何构建?
- 8. 如何从当前图形上下文创建UIImage?
- 9. 从CIImage创建UIImage
- 10. 从MKMapView创建UIImage
- 11. 从UIImage创建MSSticker
- 12. 从UILabel创建UIImage?
- 13. 从功能获取UIImage
- 14. 如何从字节创建UIImage?
- 15. 如何使用UI功能创建全局级功能
- 16. 如何使用stapplingin功能创建功能?
- 17. 如何在使用imageWithData创建UIImage时缓存图像
- 18. 如何创建'onclick'功能?
- 19. 正确地从NSString创建图像
- 20. 如何从更大的功能创建更小的功能?
- 21. 使用WebBrowser重新创建Chrome的“状态文本”功能
- 22. 使用抽象类绘制功能图
- 23. 错误绘图功能使用matlab
- 24. Vuforia-iOS-如何从UIImage动态创建/添加图像目标
- 25. 如何从NSData的创建图像的UIImage异步
- 26. 如何创建文本框点击功能
- 27. PHP如何让动态创建文本框的功能的onblur
- 28. iPhone:使用自动换行从NSString创建图像
- 29. NSString到UIImage
- 30. 如何从文本文件创建缩略图图像?
对于iOS4 +,如果缩放比例不是1.0(视网膜显示为2.0),则应创建缩放比例为0.0的上下文,以获得主屏幕的缩放比例:\t UIGraphicsBeginImageContextWithOptions(size,NO,0.0); – valexa 2010-10-03 16:02:05
@rpmx转义字符如\ n新行未被检测到? – Yadnesh 2012-01-17 09:03:56
@Yadnesh:使用:[text drawInRect:(CGRect)rect withFont:(UIFont *)font]; – rpmx 2012-01-21 23:57:48