将Apple Emoji(string)转换为UIImage

我需要所有的苹果表情符号。
我可以得到所有的表情符号,并把它们从网站getemoji复制他们,但在我的应用程序,我需要emojis 作为图像正确的顺序。

有没有一种很好的方法来将我复制到string的emojis转换为UIImage
或者更好的解决scheme,以正确的顺序得到所有的苹果emojis?

将此扩展添加到您的项目

extension String { func image() -> UIImage { let size = CGSize(width: 30, height: 35) UIGraphicsBeginImageContextWithOptions(size, false, 0); UIColor.whiteColor().set() let rect = CGRect(origin: CGPointZero, size: size) UIRectFill(CGRect(origin: CGPointZero, size: size)) (self as NSString).drawInRect(rect, withAttributes: [NSFontAttributeName: UIFont.systemFontOfSize(30)]) let image = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() return image } } 

上面的代码将当前String绘制成带有白色背景色的图像上下文,最后将其转换为UIImage

现在你可以写

在这里输入图像说明

更新

给定一个表示表情符号的unicode值的范围列表

 let ranges = [0x1F601...0x1F64F, 0x2702...0x27B0] 

你可以把它转换成图像列表

 let images = Array(ranges.flatten()) .map { UnicodeScalar($0) } .map { Character($0) } .map { String($0).image() } 

结果:

在这里输入图像说明

我不能保证范围列表是完整的,你需要自己search😉

更新了Swift 3.0.1的@appzYourLife答案

 extension String { func image() -> UIImage? { let size = CGSize(width: 30, height: 35) UIGraphicsBeginImageContextWithOptions(size, false, 0); UIColor.white.set() let rect = CGRect(origin: CGPoint(), size: size) UIRectFill(CGRect(origin: CGPoint(), size: size)) (self as NSString).draw(in: rect, withAttributes: [NSFontAttributeName: UIFont.systemFont(ofSize: 30)]) let image = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() return image } } 

同样的事情Swift 4:

 extension String { func emojiToImage() -> UIImage? { let size = CGSize(width: 30, height: 35) UIGraphicsBeginImageContextWithOptions(size, false, 0) UIColor.white.set() let rect = CGRect(origin: CGPoint(), size: size) UIRectFill(CGRect(origin: CGPoint(), size: size)) (self as NSString).draw(in: rect, withAttributes: [NSAttributedStringKey.font: UIFont.systemFont(ofSize: 30)]) let image = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() return image } }