一尘不染

将Apple Emoji(String)转换为UIImage

swift

我需要所有苹果表情符号。
我可以通过从 站点getemoji复制它们来获取所有表情符号并将它们放入字符串中,但是在我的应用程序中,我需要按 正确的顺序将表情符号作为图像。

有没有一种很好的方法可以将我复制的表情符号转换为String并转换为UIImage?
还是更好的解决方案,以正确的顺序获取所有Apple表情符号?


阅读 300

收藏
2020-07-07

共1个答案

一尘不染

为Swift 4.1更新

将此扩展添加到您的项目中

import UIKit

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

上面的代码将电流绘制String到具有白色背景色的Image Context,最后将其转换为UIImage。

Example

给定一个范围列表,用于指示表情符号符号的unicode值

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

您可以将其转换为图像列表

let images = ranges
    .flatMap { $0 }
    .compactMap { Unicode.Scalar($0) }
    .map(Character.init)
    .compactMap { String($0).image() }

Result:

I cannot guarantee the list of ranges is complete, you’ll need to search for
it by yourself

2020-07-07